1

MapReduce ジョブ (関連する場合は具体的には Hadoop) を作成するときは、キーと値のペアのシーケンスを生成するmap()と関数を定義する必要があります。reduce()キーと値のデータ型は、アプリケーションで自由に定義できます。

(string, int)単語カウントの標準的な例では、両方の関数が、キーが単語であり、値が出現回数である型のペアを生成します。ここでは、私が見た他のすべての例と同様に、出力されたキーと値の型は 2 つの関数間で一貫しています。

MapReduce のアプリケーション内で生成されたキーmap()と値のペアの型は同じである必要がありますか? reduce()はいの場合:なぜですか?

4

2 に答える 2

6

いいえ。もちろん、map の出力ペアと reduce の入力ペアの型は同じでなければなりません。一方が他方に渡されるからです。

ただし、入ってきたマップ ペアとは異なるタイプを出力する reduce タスクが存在する可能性は十分にあります。たとえば、map タスクがドキュメント内の単語をカウントし、reduce タスクが平均単語頻度を計算した場合などです。その場合、map は整数を出力しますが、reduce は浮動小数点数を出力します。

于 2009-12-07T11:36:34.883 に答える
1

Map と Reduce の出力は異なる場合があります。ただし、アプリケーションにそれらが存在することを伝える必要があります。方法は次のとおりです。

setOutputKeyClass() および setOutuptValueClass() メソッドは、多くの場合同じである map および reduce 関数の出力タイプを制御します。

それらが異なる場合は、マップ出力キー/値のタイプをそれぞれ setMapOutputKeyClass() および SetMapOutputValue で設定できます。

于 2012-03-19T11:05:05.740 に答える