小さなファイル (~HDFS ブロック サイズ) が多数ある場合と大きなファイルがいくつかある場合、ジョブによって生成されるマップ タスクの数に違いはありますか?
質問する
273 次
1 に答える
3
どちらを使用するかによって異なりInputFormat
ます。これは、入力分割の計算を決定し、マップ タスクの数を決定するためです。
デフォルトを使用する場合TextInputFormat
、各ファイルには少なくとも 1 つの分割があるため、ファイルごとに少なくとも 1 つのマッパーがあり、これらのファイルが数 kB であっても、各マッパーはほとんど作業を行いませんが、これにより Map/フレームワークを減らします。つまり、これらの「小さい」ファイルがブロック サイズに近いことが保証されている場合、それはおそらくあまり問題にはなりません。
ファイルを制御できず、ファイルが非常に小さくなる可能性がある場合は、複数の入力ファイルを同じ分割に結合する別のInputFormat
呼び出しCombineFileInputFormat
を使用することをお勧めします。この場合のマップの数は、データの全体量にのみ依存します。ファイルの数。実装はここにあります。
于 2013-02-09T01:41:00.570 に答える