web-dev-qa-db-ja.com

Pythonを使用してParquetファイルを作成する方法は?

Pythonを使用してParquetファイルを作成できるライブラリを見つけることができません。 Snappyまたはそれに類似した圧縮メカニズムを一緒に使用できる場合のボーナスポイント。

これまでに見つけた唯一の方法は、Sparkをpyspark.sql.DataFrame Parquetサポートとともに使用することです。

SparkジョブではないParquetファイルを作成する必要があるスクリプトがいくつかあります。 Pythonでpyspark.sqlを含まないParquetファイルを記述する方法はありますか?

22
octagonC

更新(2017年3月):現在2のライブラリがありますwritingParquetファイル:

  1. fastparquet
  2. pyarrow

どちらもまだ開発中ですが、多くの免責事項が付属しているため(ネストされたデータなどはサポートされていません)、必要なすべてをサポートしているかどうかを確認する必要があります。

古い回答:

2.2016の時点では、writeParquetファイルが可能なPython専用ライブラリはないようです

readParquetファイルだけが必要な場合は python-parquet があります。

回避策として、例えば、他のプロセスに依存する必要があります。 pyspark.sql(Py4Jを使用してJVM上で実行されるため、平均的なCPythonプログラムから直接使用することはできません)。

17
rkrzr

fastparquet 書き込みサポートがあります。ファイルにデータを書き込むスニペットがあります

from fastparquet import write
write('outfile.parq', df)
4
Muayyad Alsadi

fastparquetを使用すると、pandas dfを記述して、withsnappyまたはgzip圧縮のいずれかを次のように寄木できます。

以下がインストールされていることを確認してください。

$ conda install python-snappy
$ conda install fastparquet

輸入する

import pandas as pd 
import snappy
import fastparquet

次のpandas dfがあるとします

df = pd.DataFrame(data={'col1': [1, 2], 'col2': [3, 4]})

df圧縮で寄木細工にsnappyを送信します

df.to_parquet('df.snap.parquet',compression='snappy')

df圧縮で寄木細工にgzipを送信します

df.to_parquet('df.gzip.parquet',compression='gzip')

小切手:

寄木細工をpandas df

pd.read_parquet('df.snap.parquet')

または

pd.read_parquet('df.gzip.parquet')

出力:

   col1 col2
0   1    3
1   2    4
1
Grant Shannon

pysparkは、Pythonで寄木細工を書くのに最適な選択肢のようです。針の代わりに剣を使用しているように見えるかもしれませんが、それは現時点での方法です。

  • Lzo、snappyなどのほとんどの圧縮タイプをサポートしています。 Zstdのサポートはすぐに導入されるはずです。
  • 完全なスキーマをサポートしています(ネスト、構造体など)

単純に、pip install pysparkそしてあなたは行ってもいい。

https://spark.Apache.org/docs/latest/sql-data-sources-parquet.html

0
Kushagra Verma