Map Reduce 出力パーツ ファイルについていくつか質問があります。
-
1> map reduce 出力の part-r-* ファイルと part-* ファイルの違いは何ですか? part-r-* は mapper からの出力で、part-* は reducer からの出力ですか?
2> レデューサーが結果を生成しない場合、マッパーの出力はそのままになりますか、それとも削除されますか?
通常、part-r-*はレデューサーから取得されます。 MultipleOutputs
別の命名規則を使用できます。リデュースステップがない場合、出力はpart-m-*になります。私が理解しているように、レデューサーが定義されている場合、レデューサーが何かを生成するかどうかに関係なく、マッパー出力は削除されます。通常、レデューサー出力ファイルは、を使用しない限り、空であっても生成されますLazyOutputFormat
。m-nnnnnまたはr-nnnnnで終わっていないpart-*ファイルはどこで見つかりましたか?
古いバージョン (< 0.2) では、part-000* のみを出力していました。しかし今では、part-mn* (n は番号 ex: part-m-00000) と part-rn* ファイルの両方が表示されます。part-rn* はレデューサーからの出力用です。part-mn* はコンバイナーからの出力です。(コンバイナーを使用しない場合、part-mn* は取得されません。これがデフォルトの動作であるかどうかはわかりません。)
part-00000 は、古い API でマッパーまたはリデューサーによって作成された出力ディレクトリです。新しい API では、マッパー出力の場合は part-m-* に、レデューサー出力の場合は part-r-* にわずかに変更されました。詳細については、OReilly の Hadoop Definitive Guide の 28 ページを参照してください。