私のアプリケーションでは、キーに基づいてできるだけ多くのレデューサー ジョブを作成したいと考えています。現在、私の現在の実装では、すべてのキーと値を 1 つの (リデューサー) 出力ファイルに書き込みます。これを解決するために、1 つのパーティショナーを使用しましたが、クラスを呼び出すことができません。パーティショナーは、選択マップ タスクの後、選択削減タスクの前に呼び出す必要がありますが、呼び出されませんでした。パーティショナーのコードは次のとおりです。
public class MultiWayJoinPartitioner extends Partitioner<Text, Text> {
@Override
public int getPartition(Text key, Text value, int nbPartitions) {
return (key.getFirst().hashCode() & Integer.MAX_VALUE) % nbPartitions;
return 0;
}
}
このコードは、キーと値に基づいてファイルを分割するのに正しく、出力は自動的にレデューサーに転送されますか??