1

Hadoop によるこのワード カウントの例を見てきました: http://hadoop.apache.org/docs/r1.0.4/mapred_tutorial.html#Source+Code

そして、私は Map 関数について少し混乱しています。示されている map 関数では、LongWritable 型の「キー」を受け取りますが、このパラメーターは Map 関数の本体では使用されません。アプリケーション プログラマーは、Hadoop がこのキーに対して何を渡すことを期待していますか? テキスト行または何かから値を解析するだけの場合、マップ関数にキーが必要なのはなぜですか。入力にキーと値の両方が必要な例を教えてください。マップは V1 -> (K2, V2) しか表示されません。

別の質問: Hadoop の実際の実装では、複数の削減ステップがありますか? もしそうなら、関数が (K2, V2) -> (K3, V3) の場合、hadoop はどのように同じリダクション関数を複数回適用しますか? 別のリダクションを実行する場合は、タイプ (K3、V3) を取り込む必要があります...

ありがとうございました!

4

1 に答える 1

2

map() メソッドには常にキーと値 (およびコンテキスト) が渡されるため、そこにキーがあります。実際にキーや値を使用するかどうかは、あなた次第です。この場合、キーは読み取られるファイルの行番号を表します。ワードカウントロジックはそれを必要としません。map() メソッドは値を使用するだけで、テキスト ファイルの場合はファイルの行です。

2 番目の質問 (実際には独自のスタック オーバーフローの質問である必要があります) に関しては、hadoop ワークフローに任意の数のマップ/リデュース ジョブがある場合があります。これらのジョブの中には、既存のファイルを入力として読み取るものもあれば、他のジョブの出力を読み取るものもあります。各ジョブには、1 つ以上のマッパーと 1 つのレデューサーがあります。

于 2013-03-28T01:11:40.813 に答える