2015-11-19 10 views
17

HadoopやSparkなどのクラスタコンピューティングインフラストラクチャを設定せずに、適度なサイズのパーケットデータセットをメモリ内のPandas DataFrameに読み込む方法を教えてください。これは、ラップトップ上の単純なPythonスクリプトを使用してメモリ内を読みたいと思うほどの量のデータです。データはHDFS上に存在しません。これは、ローカルファイルシステム上か、場合によってはS3内にあります。私は、Hadoop、Hive、Sparkのような他のサービスをスピンアップして設定したくありません。寄木細工のファイルをPandas DataFrameに読み込む方法は?

Blaze/Odoはこれを可能にしていると思いました.OdoのドキュメントにはParquetが書かれていますが、例はすべて外部のHiveランタイムを経由しているようです。

+2

データは公開されていますか? python寄木細工の私の支店https://github.com/martindurant/parquet-python/tree/py3には、parquet.rparquetのパンダ・リーダーがありました。試してみることもできます。それが扱うことができない多くの寄せ木細工の構造があります。 – mdurant

+3

Pandasの作者、Wes Mckinneyが参加しているApache Arrowプロジェクトを待ちます。 http://wesmckinney.com/blog/pandas-and-apache-arrow/完了後、ユーザーはPandasから直接寄木細工のファイルを読むことができるはずです。 – karenyng

+1

質問はオフトピックとして閉鎖されているので(Googleでの最初の結果でも)コメントに答える必要があります。今すぐpyarrowを使用して寄木細工ファイルを読み込み、それをpandas DataFrame: 'import pyarrowに変換できます。 pqとしての寄木張り; df = pq.read_table( 'dataset.parq')。to_pandas() ' – sroecker

答えて

15

パンダ0.21はnew functions for Parquet紹介:

pd.read_parquet('example_pa.parquet', engine='pyarrow') 

または

pd.read_parquet('example_fp.parquet', engine='fastparquet') 

上記のリンクは説明する:

これらのエンジンは非常に類似しており、/はほぼ同じ寄木細工の形式のファイルを読み書きする必要があり。これらのライブラリは、さまざまな根本的な依存関係を持っています(例えば、numbaを使用するとfastparquet、pyarrowはcライブラリを使用します)。

12

更新:私がこれに答えた時から、寄木細工のよりよい読み書きのためにApache Arrowを見ていることがたくさんありました。また:http://wesmckinney.com/blog/python-parquet-multithreading/

は比較的うまく機能Pythonの寄木細工のリーダーがあります:https://github.com/jcrobak/parquet-python

これは、Pythonのオブジェクトを作成し、その後、プロセスは、例えばpd.read_csvよりも遅くなりますので、パンダのデータフレームに移動する必要があります。

+3

注意深く、それは寄木細工への書き込みをサポートしていません... –

+5

実際に両方の読み取り/書き込みを可能にするpyarrowがあります:http://pyarrow.readthedocs.io/ja/最新/ parquet.html – bluszcz

+0

あなたのリンクに従おうとすると、パーミッションが拒否されました。@ bluszcz - あなたは別のものをお持ちですか? –

関連する問題