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