web-dev-qa-db-ja.com

1つの大きな寄木細工のファイルまたは多くの小さな寄木細工のファイルを用意する方が良いですか?

Hdfsがファイルを64mbチャンクのようなものに分割することを理解しています。ストリーミングで受信するデータがあり、それらを大きなファイルまたは中サイズのファイルに保存できます。カラムナファイルストレージの最適なサイズは?最小の列が64 MBである場所にファイルを格納できる場合、たとえば1 GBのファイルを使用するよりも計算時間を節約できますか?

13
ForeverConfused

Parquetファイルは内部でrow groupsに分割されています。

parquet layout

https://parquet.Apache.org/documentation/latest/

したがって、寄木細工のファイルを大きくしても、ベースラインの寄木細工のファイルが小さくない場合でも、行グループは同じになる可能性があります。処理に大きな直接的なペナルティはありませんが、反対に、たとえば、行グループが複数の寄木細工のファイルにまたがることができないなど、寄木細工のファイルが小さい/小さい場合、読者はおそらくより大きく/より最適な行グループを利用する機会が増えます。

また、各パーケットファイルは論理的に複数のsplits(1つ以上の行グループで構成される)に分割できるため、大きなパーケットファイルはリーダーの並列処理を制限しません。

大きな寄木細工のファイルの唯一の欠点は、それらを作成するためにより多くのメモリを必要とすることです。したがって、Sparkエグゼキューターのメモリを増やす必要がある場合は注意が必要です。

row groupsは、Parquetファイルを垂直分割する方法です。各row groupには多数の行チャンクがあります(各列に1つ、寄木細工のデータセットに水平分割を提供する方法)。

1
Tagar