在上一篇统计的基础上进行了代码优化;
总话费统计
https://blog.csdn.net/weixin_46327726/article/details/122116417?spm=1001.2014.3001.5501
增加了分区的功能;
1.新建freePartition.java类;(设置分区数目以及分区的依据)
这里根据手机号前三个数字进行分区划分为6个区;
import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Partitioner; public class freePartition extends Partitioner{ @Override public int getPartition(Text text, freebean freebean, int i) { String phone=text.toString().substring(0,3); if("133".equals(phone)){ return 0; }else if("134".equals(phone)){ return 1; }else if("135".equals(phone)){ return 2; }else if("136".equals(phone)){ return 3; }else if("137".equals(phone)){ return 4; } return 5; } }
2.在freeDrive.java中增加分区
(其中任务块个数不能小于分区个数)
job.setPartitionerClass(freePartition.class); job.setNumReduceTasks(6);
3.查看运行结果
随机打开一个输出结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)