値型イテレータでレデューサに入力するデータがあります。 この値のリストを昇順にソートするにはどうすればよいですか?Hadoopで処理する前にイデューサの入力イテレータ値をソートする
レデューサーですべてを処理する前に時間値であるため、それらを並べ替える必要があります。
値型イテレータでレデューサに入力するデータがあります。 この値のリストを昇順にソートするにはどうすればよいですか?Hadoopで処理する前にイデューサの入力イテレータ値をソートする
レデューサーですべてを処理する前に時間値であるため、それらを並べ替える必要があります。
は、Hadoopののビルトイン機能を使用して減速機の入力値のソートを実現するには、この操作を行うことができます。
1.Modifyマップ出力キー - 対応value.Emitで、この複合キーと値をマップ出力キーを追加hadoopはソートのためにデフォルトでキー全体を使用するので、マップ出力レコードは(あなたの古いキー+値)でソートされます。
2.ソートは手順1で実行されましたが、process.Hadoopでマップ出力キーを操作しました。デフォルトでは、キーに基づいてパーティション化とグループ化が行われます。
オリジナルのキーを変更したので、は、古いキー、つまりコンポジットキーの最初の部分のみに基づいて動作するように、PartitionerおよびGroupingComparatorを修正する必要があります。 Partitioner - 同じReducerインスタンス内にあるキーと値のペアを決定します。
GroupComparator - Reducerに到達したキーと値のペアのうちどれが同じreduceメソッド呼び出しになるかを決定します。
4.最後にレデューサーの入力キーの最初の部分を抽出して古いキーを取得する必要があります(明らかに)。
あなたがより多くの(より良い)の回答が必要な場合は、HadoopのDefinitive Guideの第3版に向ける - >第8章 - >ソート - >あなたは二次ソートと呼ばれるために頼ま何二次ソート
正確に、David Gruzmanはこのhttp://pkghosh.wordpress.com/2011/04/13/map-reduce-secondary-sort-does-it-all/で良い例を参照しました –
。簡単に言えば、キーに "value sort key"を追加し、hadoopをグループ化して "real key"だけでなく、両方でソートするようにします。私は完全に減少する前にソートしたいために、あなたのモチベーションを理解していないことを確認
http://pkghosh.wordpress.com/2011/04/13/map-reduce-secondary-sort-does-it-all/
:
はここで二次ソートについては非常に良い説明です。 – mohit6up