web-dev-qa-db-ja.com

h5pyを使用してPythonでビッグデータの分析作業を行った経験はありますか?

私は多くの統計作業を行い、Pythonをメイン言語として使用しています。ただし、使用するデータセットの一部は20 GBのメモリを使用できるため、メモリ内関数を使用して操作できます。 numpy、scipy、PyIMSLはほぼ不可能です。統計分析言語SASは、厳密にメモリ内処理ではなく、ハードディスクからのデータを操作できるという大きな利点があります。しかし、私はSAS(さまざまな理由で)で多くのコードを書く必要がないようにしたいので、Python(Python $ ===(より多くのハードウェアとメモリを購入することに加えて)。

completeデータセットを操作する必要があるため、map-reduceのようなアプローチは私の作業の多くに役立たないことを明確にする必要があります(たとえば、分位数の計算やロジスティック回帰モデルのフィッティング)。

最近私は h5py で遊び始めました、そしてそれがPythonがSASのように振る舞い、動作することを可能にするために私が見つけた最良のオプションだと思いますnumpy/scipy/matplotlibなどを活用しながら、ディスクからのデータ(hdf5ファイル経由)で。Pythonとh5pyを同様の設定で使用した経験がある人がいるかどうか聞きたいですこれまでSASが主流だった「ビッグデータ」設定でPythonを使用できた人はいますか?

編集:ハードウェア/メモリを追加購入することは確かに役立ちますが、ITの観点からは、Python Pythonを販売するのは難しいです$ ===(またはR、MATLABなど)はデータをメモリに保持する必要があります。SASディスクベースの分析は遅くなる可能性がありますが、自信を持ってできるため、ここでは引き続き強力なセールスポイントがあります。膨大なデータセットを処理するので、Stackoverflow-ersが、主力のビッグデータ分析言語としてPythonを使用することで認識されるリスクを軽減する方法を理解するのに役立つことを願っています。

46
Josh Hemann

Pythonをh5py、numpy/scipy、boost :: pythonと組み合わせて使用​​して、データ分析を行います。通常のデータセットのサイズは最大数百GBです。

HDF5の利点:

  • データは、h5viewアプリケーション、h5py/ipython、およびh5 *コマンドラインツールを使用して簡単に検査できます。
  • APIはさまざまなプラットフォームと言語で利用できます
  • グループを使用した構造データ
  • 属性を使用してデータに注釈を付ける
  • 心配のない組み込みデータ圧縮
  • 単一データセットのioは高速です

HDF5の落とし穴:

  • H5ファイルに含まれるデータセット/グループが多すぎる(> 1000)場合、それらのトラバースは非常に遅いため、パフォーマンスが低下します。一方、ioは、いくつかの大きなデータセットに対して高速です。
  • 高度なデータクエリ(SQLのような)は実装が不器用で遅くなります(その場合はSQLiteを検討してください)
  • HDF5は、すべての場合にスレッドセーフではありません。ライブラリが正しいオプションでコンパイルされていることを確認する必要があります。
  • h5データセットの変更(サイズ変更、削除など)は、ファイルサイズを大きくする(最良の場合)か、不可能です(最悪の場合)(h5ファイル全体をコピーして再度フラット化する必要があります)
49

これは長いコメントであり、h5pyに関する実際の質問に対する回答ではありません。統計にはPythonを使用せず、比較的小さなデータセットを処理する傾向がありますが、 のCRANタスクビューを確認する価値があるかもしれません。 Rでのハイパフォーマンスコンピューティング 、特に「大容量メモリとメモリ不足データ」セクション。

3つの理由:

  • これらのパッケージのソースコードをマイニングして、一般的に役立つ可能性のあるアイデアを見つけることができます
  • パッケージ名はPython同等のものを検索するのに役立つかもしれません;多くのRユーザーはPythonユーザーでもあります
  • 状況によっては、上記のリンクされたパッケージの1つを使用して特定の分析のためにRにリンクし、その結果をPythonに戻すと便利な場合があります。

繰り返しになりますが、これは私のリーグから完全に外れていることを強調します。あなたがすでにこれらすべてを知っている可能性は確かにあります。しかし、おそらくこれはあなたや同じ問題に取り組んでいる誰かにとって役立つでしょう。

5
Matt Parker