2

現在、mapreduce ジョブを使用してデータを変換し、結果を Parquet 形式で保存しています。

サマリー ファイル (_metadata) も生成されます。しかし、問題は大きすぎることです(5G以上)。サイズを小さくする方法はありますか?

4

1 に答える 1

1

Alex Levenson と Ryan Blue のクレジット:

アレックス・レベンソン:

サブミッターノードで読み取る代わりに、サマリーファイルの読み取りをマッパーにプッシュできます。

ParquetInputFormat.setTaskSideMetaData(conf, true);

(Ryan Blue: これは 1.6.0 以降のデフォルトです)

または、構成で「parquet.task.side.metadata」を true に設定します。同様の問題がありました。デフォルトでは、クライアントはサブミッター ノードでサマリー ファイルを読み取りますが、これには多くの時間とメモリが必要です。このフラグは、マッパーのファイル フッターから個々のファイルのメタデータを読み取る代わりに、問題を修正します (各マッパーは必要なメタデータのみを読み取ります)。

過去に話したもう 1 つのオプションは、このメタデータ ファイルの作成をまったく無効にすることです。これは、作成にもコストがかかる可能性があるためです。タスク側のメタデータ アプローチを使用する場合は、決して使用済み。

(Ryan Blue: ファイルを抑制するオプションがあります。これをお勧めします。ファイルのメタデータがタスクで処理されるようになったので、サマリー ファイルはあまり必要ありません。)

于 2015-07-22T19:16:06.853 に答える