默認的Partition無法滿足我們的需求,因此需要自定義partition過程。
根據map輸出的不同key值,通過partition把map輸出的數據輸出到numReduceTasks個不同的reduce上去。
public static class Selector extends Partitioner<Text, Text>{
@Override
public int getPartition(Text key, Text value, int numReduceTasks) {
return Integer.parseInt(key.toString()) % numReduceTasks;
}
}
設置job的partition:
job.setPartitionerClass(Selector.class);