1

Hadoop MapReduce を学習しているときに、カスタム Partitioner クラスを作成する方法に出会いました。クラスで抽象 getPartition メソッドを定義する必要があることは理解しています。このメソッドは、現在のキーと値のペアのパーティション番号 (整数) を返すことになっています。

これで、パーティションの数は、ジョブの削減タスクの数と等しくなります。カスタム パーティショナーで、「キー」ではなく「値」に基づいてパーティションを選択するロジックを記述した場合はどうなるでしょうか。私の理解では、これは、同じキー (ただし値が異なる) を持つレコードが異なるリデュース タスクによって処理される可能性があることを意味する可能性があります。これは、MapReduce によって保証されているものではありません。これは異常ではありませんか?そして、なぜ getPartition(key, value, numPartitions) メソッドで 'value' 引数が必要なのですか? 間違っている場合は、私の理解を修正してください。

4

2 に答える 2

2

パーティションは、中間 (データをディスクに書き込む前のマッパーの出力) キーまたは値に基づいて作成できます。値に基づいてパーティション化すると、2 つの異なるパーティションに同じキーを持つレコードを含めることができます。

于 2015-09-03T05:24:31.997 に答える