Pythonはビッグデータに適していますか


13

私はこの記事で読んR言語はビッグデータに適してビッグデータを構成していること5TB、そしてそれがないながらにこのタイプのデータでの作業の実現可能性についての情報提供の良い仕事R、それはについてはほとんど情報を提供しますPythonPythonこれだけのデータを扱うことができるのかと思っていました。

回答:


16

明確にするために、OPによる元の質問の参照はおそらくSOタイプの形式には最適ではないように感じますがpython、この特定のケースでは確実に表します。

まず、データサイズに関係なくpython、制限要因にすべきでないと言ってみましょう。実際、大規模なデータセットを扱う際に遭遇する主な問題がいくつかあります。

  • データをメモリに読み込む -これは、ビッグデータの世界で直面する最も一般的な問題です。基本的に、メモリ(RAM)を超えるデータを読み込むことはできません。これを修正する最善の方法は、すべてを一度に読み取ろうとするのではなく、データに対してアトミック操作を行うことです。
  • データの保存 -これは実際には以前の問題の別の形式であり、約に達するまでに1TB、他の場所でストレージを探す必要があります。AWS S3は最も一般的なリソースでありpython、素晴らしいboto、大量のデータをリードするのを容易にするライブラリをます。
  • ネットワーク遅延 -異なるサービス間でデータを移動することがボトルネックになります。同じ場所にあるリソースを選択して壁に差し込む以外に、これを修正するためにできることはあまりありません。

13

ビッグデータを扱う際に理解する必要があることがいくつかあります-

ビッグデータとは何ですか?

あなたは有名なビッグデータのVを知っているかもしれません-ボリューム、速度、バラエティ...それで、Pythonはすべてに適していないかもしれません。また、利用可能なすべてのデータサイエンスツールに対応しています。どのツールがどの目的に適しているかを知る必要があります。

大量のデータを扱う場合:

  • Pig / Hive / Shark-データクリーニングとETL作業
  • Hadoop / Spark-分散並列コンピューティング
  • Mahout / ML-Lib-機械学習

これで、R / Pythonを中間段階で使用できますが、プロセス全体でボトルネックになることがわかります。

データの速度を扱う場合:

  • Kafka / Storm-高スループットシステム

ここで人々はR / Pythonを試みていますが、これもまた、必要な並列処理の種類とモデルの複雑さに依存します。

どんな分析をしたいですか?

モデルでデータ全体を最初にメモリに取り込む必要がある場合、中間データが大きいとコードが破損するため、モデルは複雑になりません。また、ディスクへの書き込みを考えている場合は、ディスクの読み取り/書き込みがRAMと比較して遅いため、追加の遅延が発生します。

結論

間違いなくビッグデータ空間でPythonを使用できます(確かに、人々はRを試してみているので、なぜPythonではないのでしょう)が、最初にデータとビジネス要件を知っています。同じために利用可能なより良いツールがあるかもしれないし、常に覚えている:

あなたのツールは、あなたが質問にどう答えるかを決定すべきではありません。質問によって、使用するツールが決まります。


8

Pythonには、ビッグデータを操作するための非常に優れたツールがいくつかあります。

numpy

Numpyのメモリマップトアレイを使用すると、ディスクに保存されたファイルに、あたかもアレイであるかのようにアクセスできます。アクティブに作業している配列の一部のみをメモリにロードする必要があります。通常の配列とほとんど同じように使用できます。

h5pyとpytables

これらの2つのライブラリは、HDF5ファイルへのアクセスを提供します。これらのファイルにより、データの一部のみにアクセスできます。さらに、データにアクセスするために使用される基礎ライブラリのおかげで、Pythonデータ構造にロードすることなく、データの多くの数学的な操作やその他の操作を行うことができます。5 TBをはるかに超える、大規模で高度に構造化されたファイルが可能です。また、シームレスなロスレス圧縮が可能になります。

データベース

ビッグデータセットを保存し、必要な部分だけをロードできるさまざまなタイプのデータベースがあります。多くのデータベースでは、データをpythonデータ構造にまったくロードせずに操作を行うことができます。

パンダ

これにより、HDF5データ、csvファイル、データベース、さらにはWebサイトなど、さまざまなタイプのデータへの高レベルのアクセスが可能になります。ビッグデータの場合、HDF5ファイルアクセスのラッパーを提供し、ビッグデータセットの分析を容易にします。

mpi4py

これは、Pythonコードを複数のプロセッサまたは複数のコンピューターに分散して実行するためのツールです。これにより、データの一部を同時に操作できます。

夕暮れ

これは、メモリに収まらないほど大きいデータを処理できるマルチコア方式で通常のnumpy操作の多くをサポートする、通常のnumpy配列のバージョンを提供します。

炎上

ビッグデータ専用に設計されたツール。基本的に上記のライブラリのラッパーであり、大量のデータ(HDF5やデータベースなど)を保存するさまざまな方法と、操作、数学演算、分析を容易にするツールへの一貫したインターフェイスを提供します。大きすぎてメモリに収まりません。


4

絶対に。その規模でデータを扱う場合、ビッグデータフレームワークを使用するのが一般的です。この場合、pythonまたは使用している言語は単なるインターフェイスにすぎません。たとえば、SparkのPython Programming Guideを参照してください。どんな種類のデータがあり、それをどのように使いたいですか?


3

このような量のデータを処理するために、プログラミング言語は主な関心事ではありませんが、プログラミングフレームワークは関心事です。MapReduceやSparkなどのフレームワークは、Pythonを含む多くの言語にバインドされています。これらのフレームワークには、データ分析タスク用にすぐに使用できるパッケージが多数あります。しかし、最終的にそれはすべてあなたの要件になります。つまり、あなたの仕事は何ですか?データ分析タスクにはさまざまな定義がありますが、その一部はリレーショナルデータベースで簡単に解決できます。その場合、SQLは他のすべての選択肢よりもはるかに優れています。


2

大規模なデータに関しては、言語自体はパフォーマンス機能とはほとんど関係ないと考えています。重要なのは:

  • データの実際の大きさ
  • どの処理を実行しますか
  • 使用するハードウェア
  • 使用する予定の特定のライブラリはどれですか

とにかく、Pythonはデータサイエンスコミュニティでよく採用されています。


2

私はAnaconda Python 3.4とPandasを使用して10M行データベースを検索し、20Kのログイン認証情報に一致させました。約1分かかります。パンダ内部はメモリを最大限に活用します。とはいえ、真のビッグデータには問題に対応した処理アーキテクチャが必要です。パンダは、この方程式の単なる接着剤(ロジック)であり、他のツールでも同様に行うことができます。R、Scala、Haskell、SASなどは、ロジックの一部を複製できます。おそらく、質問にすばやく答えるのに十分でしょう。しかし、Pythonは優れた(最良?)汎用ツールになります。Rコードは、Pythonおよび他のほとんどの言語で実行できます。解釈的ではありますが、わずかな労力でPythonをベンチマークツールとほぼ同じ速度で実行できる、pypyなどの高性能な手法とツールがあります。また、pythonには、ほぼすべてを行う多くのライブラリがあります-上記のリストを参照してください。

あなたがPythonを学び、使用する必要があるかどうか尋ねている場合、私の答えはイエスです記事は、両方を使用する人々の間でPythonがRよりも多く使用されていることを示しています。しかし、単一のツールで解決できるデータサイエンスの問題はほとんどありません。それはあなたの頼りになるツールになるかもしれませんが、その唯一のツールです。そして、正気な人がハンマーだけで家を建てるのと同じように、正気なデータサイエンティストはたった1つのツールを使用しません。


0

人々がビッグデータとデータサイエンスおよびビジネスインテリジェンスをどのように組み合わせるかはおかしいです。

まず、ビッグデータとは「大量のデータ」を意味するため、従来のデータベースには収まらないほど多くの情報です。ただし、ビッグデータは適切な「価値」情報ではなく、ドキュメント、画像などである場合もあります。

したがって、ビッグデータを処理するには、スピードが必要です。Pythonは非公式なので、Rです。ただし、CSVを取得してデータベースに挿入するのと同じくらい簡単なタスクであれば、ETLであるため、プログラミングする必要はありません。

そして、情報が削減されたら、python、r、またはあなたが望むものを適用できます。Excelでも。ただし、この段階では、ビッグデータはもはやビッグではなく、従来のデータです。

私見、Javaは(チェーン全体で)ビッグデータに適していますが、非実用的な理由でPythonをデフォルトとして採用しています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.