特定のレコードをすべてのレデューサーに送信するにはどうすればよいですか?
Partitioner クラスとその機能は知っていますが、レコードがすべてのレデューサーに送信されるようにする簡単な方法がわかりません。
基本的に、パーティショナーには次のメソッドがあります。
int getPartition(K2 key,
V2 value,
int numPartitions)
私の最初のアイデアは、Partitioner と Mapper を次のように連携させることでした: Mapper は reduce タスクの数に等しい回数だけレコードを出力し続け、Partitioner はすべての int (0 から numPartitions-1 まで) を返します。レコードがすべてのパーティションに到達していることを確認してください。
これを解決する他のよりスマートな方法はありますか? たとえば、すべてのパーティションに送信する必要があるレコードに対して -1 を返します。フレームワークは、返された -1 を確認したときにそれを行います。