Apache Parquetファイルに関するわかりやすい英語の説明が見つかりませんでした。といった:
これらの質問に関するヘルプを歓迎します。
Apache Parquetは、列形式でデータを保存するバイナリファイル形式です。 Parquetファイル内のデータは、列と行があるRDBMSスタイルのテーブルに似ています。ただし、データに一度に1行ずつアクセスする代わりに、通常は一度に1列にアクセスします。
Apache Parquetは、現代のビッグデータストレージ形式の1つです。これにはいくつかの利点があり、そのいくつかは次のとおりです。
いいえ、寄木細工のファイルは、HDFSだけでなく、どのファイルシステムにも保存できます。前述のように、これはファイル形式です。そのため、名前と。parquet拡張子を持つ他のファイルとまったく同じです。ただし、ビッグデータ環境で通常発生するのは、1つのデータセットが複数の寄木細工ファイルに分割(またはパーティション分割)され、さらに効率化されることです。
すべてのApacheビッグデータ製品は、デフォルトでParquetファイルをサポートしています。そのため、Apacheエコシステムにしか存在できないように見えるかもしれません。
前述のように、Hadoop、Hive、Sparkなどの現在のすべてのApacheビッグデータ製品は、デフォルトでParquetファイルをサポートしています。
そのため、これらのシステムを活用して、Parquetデータを生成または読み取ることができます。しかし、これは実用的ではありません。 CSVファイルを読み取ったり作成したりするには、Hadoop/HDFS + Hiveをインストールして構成する必要があると想像してください。幸いなことに、他の解決策があります。
独自の寄木細工のファイルを作成するには:
寄木細工のファイルの内容を表示するには:
他の方法はありますか?
おそらく。しかし、多くは存在せず、それらはほとんど文書化されていません。これは、Parquetが非常に複雑なファイル形式であるためです(正式な定義さえ見つけられませんでした)。私がリストしたものは、私がこの応答を書いているときに知っている唯一のものです
これは Apache Arrow で可能になり、異なるデータ形式間の通信/転送を簡素化するのに役立ちます。私の答え here または official docs を参照してくださいPythonの場合。
基本的には、pandas DataFrame
のような方法で寄木細工のファイルをすばやく読み書きでき、notebooks
を使用して、通常のcsv
ファイルのようにこれらのファイルを表示および処理できるという利点があります。
@salの広範な答えに加えて、この文脈で出会ったもう1つの質問があります。
ここではまだWindowsコンテキストにいるので、その方法はそれほど多くないことを知っています。 SQLエンジンとして Spark を使用し、Sparkへのインターフェイスとして Python を使用することで、最良の結果が得られました。ただし、 Zeppelin 環境も同様に機能すると想定していますが、まだ自分で試してはいません。
Michael Garlanykによる非常によくできたガイドがあります Spark/Pythonの組み合わせのインストールをガイドします。
設定が完了すると、寄木細工とやり取りできるようになります。
from os import walk
from pyspark.sql import SQLContext
sc = SparkContext.getOrCreate()
sqlContext = SQLContext(sc)
parquetdir = r'C:\PATH\TO\YOUR\PARQUET\FILES'
# Getting all parquet files in a dir as spark contexts.
# There might be more easy ways to access single parquets, but I had nested dirs
dirpath, dirnames, filenames = next(walk(parquetdir), (None, [], []))
# for each parquet file, i.e. table in our database, spark creates a tempview with
# the respective table name equal the parquet filename
print('New tables available: \n')
for parquet in filenames:
print(parquet[:-8])
spark.read.parquet(parquetdir+'\\'+parquet).createOrReplaceTempView(parquet[:-8])
このように寄木細工を読み込んだら、Pyspark APIを操作できます。経由:
my_test_query = spark.sql("""
select
field1,
field2
from parquetfilename1
where
field1 = 'something'
""")
my_test_query.show()