2013-02-22 6 views
6

値型イテレータでレデューサに入力するデータがあります。 この値のリストを昇順にソートするにはどうすればよいですか?Hadoopで処理する前にイデューサの入力イテレータ値をソートする

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

+0


はここで二次ソートについては非常に良い説明です。 – mohit6up

答えて

4

は、Hadoopののビルトイン機能を使用して減速機の入力値のソートを実現するには、この操作を行うことができます。

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

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

オリジナルのキーを変更したので、は、古いキー、つまりコンポジットキーの最初の部分のみに基づいて動作するように、PartitionerおよびGroupingComparatorを修正する必要があります。 Partitioner - 同じReducerインスタンス内にあるキーと値のペアを決定します。
GroupComparator - Reducerに到達したキーと値のペアのうちどれが同じreduceメソッド呼び出しになるかを決定します。

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

あなたがより多くの(より良い)の回答が必要な場合は、HadoopのDefinitive Guideの第3版に向ける - >第8章 - >ソート - >あなたは二次ソートと呼ばれるために頼ま何二次ソート

+0

正確に、David Gruzmanはこのhttp://pkghosh.wordpress.com/2011/04/13/map-reduce-secondary-sort-does-it-all/で良い例を参照しました –

関連する問題