現在、mapreduce ジョブを使用してデータを変換し、結果を Parquet 形式で保存しています。
サマリー ファイル (_metadata) も生成されます。しかし、問題は大きすぎることです(5G以上)。サイズを小さくする方法はありますか?
現在、mapreduce ジョブを使用してデータを変換し、結果を Parquet 形式で保存しています。
サマリー ファイル (_metadata) も生成されます。しかし、問題は大きすぎることです(5G以上)。サイズを小さくする方法はありますか?
Alex Levenson と Ryan Blue のクレジット:
アレックス・レベンソン:
サブミッターノードで読み取る代わりに、サマリーファイルの読み取りをマッパーにプッシュできます。
ParquetInputFormat.setTaskSideMetaData(conf, true);
(Ryan Blue: これは 1.6.0 以降のデフォルトです)
または、構成で「parquet.task.side.metadata」を true に設定します。同様の問題がありました。デフォルトでは、クライアントはサブミッター ノードでサマリー ファイルを読み取りますが、これには多くの時間とメモリが必要です。このフラグは、マッパーのファイル フッターから個々のファイルのメタデータを読み取る代わりに、問題を修正します (各マッパーは必要なメタデータのみを読み取ります)。
過去に話したもう 1 つのオプションは、このメタデータ ファイルの作成をまったく無効にすることです。これは、作成にもコストがかかる可能性があるためです。タスク側のメタデータ アプローチを使用する場合は、決して使用済み。
(Ryan Blue: ファイルを抑制するオプションがあります。これをお勧めします。ファイルのメタデータがタスクで処理されるようになったので、サマリー ファイルはあまり必要ありません。)