2013-04-23 10 views
5

異なるレデューサーで同じキーで値を処理することは可能ですか?すべてのマッパーから同じキーでデータが得られました。異なるレデューサーで処理したいのですか?私の混乱は...本は同じキーを持つすべての値が同じ減速に行くだろうと言うことです同じ鍵違いのレデューサー(HADOOP)?

mapper1(k1,v1),mapper2(k1,v2),mapper3(k1,v3) and so on... 

私はそれのようでなければなりません...同じ減速にすべてのデータを望んでいない、

reducer1(k1,v1),reducer2(k1,v2).... 

とはSUM1とreducer2プロデュースSUM2を生成reducer1言うことができますし、私は

sum=sum2+sum1 

がどのように私はそれを行う必要があることをしたいですか?

+0

あなたは...コンバイナを使用して、上記行い、その後、減速中コンバイナの出力をまとめる傾ける理由はありますか? – Suchet

+0

それは私は非常に大きなデータを持っていると仮定します(私は行列の行数が膨大で、最終的にはすべての要素の合計が必要です)、これを合算したい場合は、全体として、すべてのコンバイナの出力を1つに減らす必要があります(私は9時です)。非常に遅いプロセスにつながります。 – Divyendra

+0

あなたはHadoopの分散性質の恩恵を受けていません。より多くのマッパーが入力ファイルを同時に処理できるように、データを分割します。これらの問題は簡単です。 – Suchet

答えて

4

同じキーのデータは、常に同じレデューサーに送られます。しかしあなたはあなたが望むものを選ぶことができます。そのため、異なるレデューサーに行きたい場合は、別のキーを選んでください。

リデューサーの出力に基づいて追加の組み合わせを実行する場合は、別のMapReduceジョブを実行し、最初のジョブの出力を次のジョブの入力として使用する必要があります。これは醜い高速になる可能性がありますので、簡略化するためCascadingPig、またはHiveをご覧ください。

+0

問題はマッパーではありません...それらは倍数になりますが、もし私が総和を望むなら、私は1つの減速機を使用しなければならず、その場合、すべてのマッパー出力に対して1つの減速機が遅くなります... plz私は間違っている場合私を修正? - – Divyendra

+0

いいえ、あなたは正しいです。 1つの減速機だけを使うのは遅いです。しかし、あなたの最終的な答えが異なる減速機からの出力の組み合わせであることを望むなら、あなたは別のMR仕事をしなければならないでしょう。結果として1つの単一の値が必要な場合は、ある時点で1つの減速器しか持たなくてはなりません。その減速機に送信されるデータをできるだけ小さくするようにしてください。 –

関連する問題