すべてのレデューサーに特定のレコードを送信するにはどうすればよいですか?Hadoopはすべてのレデューサーにレコードを送信します
私はPartitionerクラスとそれが何をしているのか知っていますが、すべてのレデューサーにレコードを確実に渡すための簡単な方法はありません。
基本的には、パーティショナは、この方法があります:マッパーがレコードに減らすの数だけを出力し続ける:次のように私の最初のアイデアが協力パーティショナとマッパーを持っていることでした
int getPartition(K2 key,
V2 value,
int numPartitions)
Partitionerはすべてのint(0からnumPartitions-1)を返します。これにより、レコードがすべてのパーティションに到達するようになります。
これを解決する他のスマートな方法はありますか?例えば、私はすべてのパーティションに送られる必要があるレコードに対して-1を返し、フレームワークは返された-1を見ると私のためにそれを行います。
また、必要とするグループ化コンパレータに関するこの回答を更新する必要があります。 –
これも私が考えていた方法です。私はそれを非常にはっきりと説明していませんでした。また、Partitionerオブジェクトにカウンタを持って戻ってきた次のパーティションを追跡することも考えていました。しかし、PartitionerオブジェクトがGC化され、カウンタがリセットされる可能性があるため、これが解決策であるかどうかはわかりません。 グループ化コンパレータに関しては、これは私が記述していない私の要件に依存すると私は思う。私は必要に応じて戻ってきます。 ありがとう! – Razvan