1、可以使用wordcount代码测试
https://blog.csdn.net/weixin_43205308/article/details/129876876
2、主要代码
job.setNumReduceTasks(2);
3、默认分区规则
将key取 hash 值,然后对ReduceTask个数取余。key.hashcode() % numReduceTask(每个分区都会产生一个ReduceTask,所以ReduceTask个数就是分区个数)
4、效果
5、自定义分区
5.1自定义规则
package com.example.hadoop.partioner2;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Partitioner;
public class PartitionerRule extends Partitioner<Text,FlowBean> {
@Override
public int getPartition(Text text, FlowBean flowBean, int i) {
String phone=text.toString();
String prefix=phone.substring(0,3);
switch (prefix){
case "136":
return 0;
case "137":
return 1;
case "138":
return 2;
case "139":
return 3;
default:
return 4;
}
}
}
5.2主要代码
job.setPartitionerClass(PartitionerRule.class);
job.setNumReduceTasks(5);
5.3其他代码具体可参考
https://blog.csdn.net/weixin_43205308/article/details/129882158?spm=1001.2014.3001.5502