4

私は 4 つの MapReduce ステップを持つプログラムを使用しています。最初のステップの出力は次のとおりです。

id      value
 1        20
 2         3
 3         9
 4        36

約 1,000,000 個の ID があり、2 番目のステップで値を並べ替える必要があります。このステップの出力:

 id      value
 4        36
 1        20
 3         9
 2         3

map reduce でデータを並べ替えるにはどうすればよいですか? テラソートを使用する必要がありますか? はいの場合、プログラムの 2 番目のステップでテラソートを使用するにはどうすればよいですか? ありがとう。

4

1 に答える 1

1

に従ってソートしたい場合はvalue'skey in map機能させます。すなわち

id      value
1        20
2         3
3         9
4        36
5         3

(値) (キー) in map 関数

output will be 

key      value
3         5
3         2
9         3
20        1
36        4

map<value, id> output key/value  
reduce <value, id>

id を最初の列にしたい場合は、これでうまくいきます。

context.write(値、キー);

IDはソートされないことに注意してください

于 2013-05-07T04:37:54.883 に答える