Pythonを使用してParquetファイルを作成できるライブラリを見つけることができません。 Snappyまたはそれに類似した圧縮メカニズムを一緒に使用できる場合のボーナスポイント。
これまでに見つけた唯一の方法は、Sparkをpyspark.sql.DataFrame
Parquetサポートとともに使用することです。
SparkジョブではないParquetファイルを作成する必要があるスクリプトがいくつかあります。 Pythonでpyspark.sql
を含まないParquetファイルを記述する方法はありますか?
更新(2017年3月):現在2のライブラリがありますwritingParquetファイル:
どちらもまだ開発中ですが、多くの免責事項が付属しているため(ネストされたデータなどはサポートされていません)、必要なすべてをサポートしているかどうかを確認する必要があります。
古い回答:
2.2016の時点では、writeParquetファイルが可能なPython専用ライブラリはないようです
readParquetファイルだけが必要な場合は python-parquet があります。
回避策として、例えば、他のプロセスに依存する必要があります。 pyspark.sql
(Py4Jを使用してJVM上で実行されるため、平均的なCPythonプログラムから直接使用することはできません)。
fastparquet 書き込みサポートがあります。ファイルにデータを書き込むスニペットがあります
from fastparquet import write
write('outfile.parq', df)
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
pyspark
は、Pythonで寄木細工を書くのに最適な選択肢のようです。針の代わりに剣を使用しているように見えるかもしれませんが、それは現時点での方法です。
単純に、pip install pyspark
そしてあなたは行ってもいい。
https://spark.Apache.org/docs/latest/sql-data-sources-parquet.html