6

値の型が Iterator のレデューサーに入力データが送られてきます。この値のリストを昇順で並べ替えるにはどうすればよいですか?

レデューサーですべてを処理する前に、時間値であるため、順番に並べ替える必要があります。

4

2 に答える 2

6

あなたが求めたのは二次ソートと呼ばれます。簡単に言うと、キーを拡張して「値の並べ替えキー」を追加し、Hadoopを作成して「実際のキー」のみでグループ化し、両方で並べ替えます。
二次ソートについての非常に良い説明があります:http:
//pkghosh.wordpress.com/2011/04/13/map-reduce-secondary-sort-does-it-all/

于 2013-02-22T17:02:49.797 に答える
6

Hadoop の組み込み機能を使用してレデューサーの入力値を並べ替えるには、次のようにします。

1. マップ出力キーの変更 - マップ出力キーに対応する値を追加します。この複合キーとマップからの値を発行します。hadoop はデフォルトでキー全体をソートに使用するため、マップ出力レコードは (古いキー + 値) でソートされます。 .

2.ソートはステップ 1 で行われますが、その過程でマップ出力キーを操作しています。Hadoop はデフォルトでキーに基づいてパーティション化とグループ化を行います。

3.元のキーを変更したため、Partitioner と GroupingComparator が古いキー (複合キーの最初の部分のみ) に基づいて機能するように変更する必要がありますPartitioner - 同じ Reducer インスタンスに
到達するキーと値のペアを決定します。 GroupComparator - Reducer に到達したキーと値のペアのうち、どのキーと値のペアが同じ reduce メソッド呼び出しに移動するかを決定します。

4.最後に(そして明らかに)古いキーを取得するために、レデューサーで入力キーの最初の部分を抽出する必要があります。

より多くの(そしてより良い)答えが必要な場合は、Hadoop Definitive Guide 3rd Edition -> Chapter 8 -> sorting -> secondary sort を参照してください。

于 2013-02-22T07:01:49.450 に答える