私はこの記事で読んR言語はビッグデータに適してビッグデータを構成していること5TB
、そしてそれがないながらにこのタイプのデータでの作業の実現可能性についての情報提供の良い仕事R
、それはについてはほとんど情報を提供しますPython
。Python
これだけのデータを扱うことができるのかと思っていました。
私はこの記事で読んR言語はビッグデータに適してビッグデータを構成していること5TB
、そしてそれがないながらにこのタイプのデータでの作業の実現可能性についての情報提供の良い仕事R
、それはについてはほとんど情報を提供しますPython
。Python
これだけのデータを扱うことができるのかと思っていました。
回答:
明確にするために、OPによる元の質問の参照はおそらくSOタイプの形式には最適ではないように感じますがpython
、この特定のケースでは確実に表します。
まず、データサイズに関係なくpython
、制限要因にすべきでないと言ってみましょう。実際、大規模なデータセットを扱う際に遭遇する主な問題がいくつかあります。
1TB
、他の場所でストレージを探す必要があります。AWS S3は最も一般的なリソースでありpython
、素晴らしいboto
、大量のデータをリードするのを容易にするライブラリをます。ビッグデータを扱う際に理解する必要があることがいくつかあります-
あなたは有名なビッグデータのVを知っているかもしれません-ボリューム、速度、バラエティ...それで、Pythonはすべてに適していないかもしれません。また、利用可能なすべてのデータサイエンスツールに対応しています。どのツールがどの目的に適しているかを知る必要があります。
大量のデータを扱う場合:
これで、R / Pythonを中間段階で使用できますが、プロセス全体でボトルネックになることがわかります。
データの速度を扱う場合:
ここで人々はR / Pythonを試みていますが、これもまた、必要な並列処理の種類とモデルの複雑さに依存します。
モデルでデータ全体を最初にメモリに取り込む必要がある場合、中間データが大きいとコードが破損するため、モデルは複雑になりません。また、ディスクへの書き込みを考えている場合は、ディスクの読み取り/書き込みがRAMと比較して遅いため、追加の遅延が発生します。
間違いなくビッグデータ空間でPythonを使用できます(確かに、人々はRを試してみているので、なぜPythonではないのでしょう)が、最初にデータとビジネス要件を知っています。同じために利用可能なより良いツールがあるかもしれないし、常に覚えている:
あなたのツールは、あなたが質問にどう答えるかを決定すべきではありません。質問によって、使用するツールが決まります。
Pythonには、ビッグデータを操作するための非常に優れたツールがいくつかあります。
Numpyのメモリマップトアレイを使用すると、ディスクに保存されたファイルに、あたかもアレイであるかのようにアクセスできます。アクティブに作業している配列の一部のみをメモリにロードする必要があります。通常の配列とほとんど同じように使用できます。
これらの2つのライブラリは、HDF5ファイルへのアクセスを提供します。これらのファイルにより、データの一部のみにアクセスできます。さらに、データにアクセスするために使用される基礎ライブラリのおかげで、Pythonデータ構造にロードすることなく、データの多くの数学的な操作やその他の操作を行うことができます。5 TBをはるかに超える、大規模で高度に構造化されたファイルが可能です。また、シームレスなロスレス圧縮が可能になります。
ビッグデータセットを保存し、必要な部分だけをロードできるさまざまなタイプのデータベースがあります。多くのデータベースでは、データをpythonデータ構造にまったくロードせずに操作を行うことができます。
これにより、HDF5データ、csvファイル、データベース、さらにはWebサイトなど、さまざまなタイプのデータへの高レベルのアクセスが可能になります。ビッグデータの場合、HDF5ファイルアクセスのラッパーを提供し、ビッグデータセットの分析を容易にします。
これは、Pythonコードを複数のプロセッサまたは複数のコンピューターに分散して実行するためのツールです。これにより、データの一部を同時に操作できます。
これは、メモリに収まらないほど大きいデータを処理できるマルチコア方式で通常のnumpy操作の多くをサポートする、通常のnumpy配列のバージョンを提供します。
ビッグデータ専用に設計されたツール。基本的に上記のライブラリのラッパーであり、大量のデータ(HDF5やデータベースなど)を保存するさまざまな方法と、操作、数学演算、分析を容易にするツールへの一貫したインターフェイスを提供します。大きすぎてメモリに収まりません。
絶対に。その規模でデータを扱う場合、ビッグデータフレームワークを使用するのが一般的です。この場合、pythonまたは使用している言語は単なるインターフェイスにすぎません。たとえば、SparkのPython Programming Guideを参照してください。どんな種類のデータがあり、それをどのように使いたいですか?
私はAnaconda Python 3.4とPandasを使用して10M行データベースを検索し、20Kのログイン認証情報に一致させました。約1分かかります。パンダ内部はメモリを最大限に活用します。とはいえ、真のビッグデータには問題に対応した処理アーキテクチャが必要です。パンダは、この方程式の単なる接着剤(ロジック)であり、他のツールでも同様に行うことができます。R、Scala、Haskell、SASなどは、ロジックの一部を複製できます。おそらく、質問にすばやく答えるのに十分でしょう。しかし、Pythonは優れた(最良?)汎用ツールになります。Rコードは、Pythonおよび他のほとんどの言語で実行できます。解釈的ではありますが、わずかな労力でPythonをベンチマークツールとほぼ同じ速度で実行できる、pypyなどの高性能な手法とツールがあります。また、pythonには、ほぼすべてを行う多くのライブラリがあります-上記のリストを参照してください。
あなたがPythonを学び、使用する必要があるかどうか尋ねている場合、私の答えはイエスです記事は、両方を使用する人々の間でPythonがRよりも多く使用されていることを示しています。しかし、単一のツールで解決できるデータサイエンスの問題はほとんどありません。それはあなたの頼りになるツールになるかもしれませんが、その唯一のツールです。そして、正気な人がハンマーだけで家を建てるのと同じように、正気なデータサイエンティストはたった1つのツールを使用しません。
人々がビッグデータとデータサイエンスおよびビジネスインテリジェンスをどのように組み合わせるかはおかしいです。
まず、ビッグデータとは「大量のデータ」を意味するため、従来のデータベースには収まらないほど多くの情報です。ただし、ビッグデータは適切な「価値」情報ではなく、ドキュメント、画像などである場合もあります。
したがって、ビッグデータを処理するには、スピードが必要です。Pythonは非公式なので、Rです。ただし、CSVを取得してデータベースに挿入するのと同じくらい簡単なタスクであれば、ETLであるため、プログラミングする必要はありません。
そして、情報が削減されたら、python、r、またはあなたが望むものを適用できます。Excelでも。ただし、この段階では、ビッグデータはもはやビッグではなく、従来のデータです。
私見、Javaは(チェーン全体で)ビッグデータに適していますが、非実用的な理由でPythonをデフォルトとして採用しています。