NameNodeによって割り当てられたブロック数を減らすため。小さなファイルを連結して128MBのファイルにしようとしています。これらの小さなファイルはgz形式であり、128MBファイルもgz形式でなければなりません。同じ入力/出力ディレクトリのサイズが違う(同じデータの場合)
これを達成するために、すべての小さなファイルの合計サイズを取得し、この合計サイズ(MB)を128で割り、必要なファイル数を取得します。
それからrdd.repartition(nbFiles).saveAsTextFile(PATH,classOf[GzipCodec])
問題は私の出力ディレクトリのサイズは私の入力ディレクトリサイズ(10%以上)・タント高いことである行います。私はデフォルトと最高の圧縮レベルでテストして、私はいつもより高い出力サイズを得ています。
なぜ私の出力ディレクトリが私の入力ディレクトリよりも高くなっているのか分かりませんが、入力ディレクトリのすべてのファイルを再分割しているという事実にリンクしていると思います。
なぜ私はこの結果を得ているのか理解できる人がいますか?
ありがとうございました:)
ファイル数はnbFilesに等しいですか? – FaigB
nbFilesは、128MBのサイズのファイルを出力するために生成するファイルの数です。 (sumSize/128MB) –