MapReduce--->分区(Partition)

MapReduce--->分区Partition

简单简绍

  • 这个可以将不同类型的数据在输出的时候进行分类,分类到不同的文件中

步骤

  • 继承Partitioner,实现getPartition方法
  • 分区是从0开始的,即0就是第一个分区
  • 由于分区是在Map阶段之后的,一次Partition的泛型是map端输出的

代码

import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Partitioner;

public class partition extends Partitioner<Text,Flowbean> {

    @Override
    public int getPartition(Text text, Flowbean flowbean, int i) {
        //这一步是获取电话的前三位数字
        String prePhoneNum = text.toString().substring(0,3);
        int partition = 4;//五个分区,从0开始算
        if("136".equals(prePhoneNum)){
            partition = 0;
        }else if ("137".equals(prePhoneNum)){
            partition = 1;
        }else if ("138".equals(prePhoneNum)){
            partition = 2;
        }else if ("139".equals(prePhoneNum)){
            partition = 3;
        }else {
            partition = 4;
        }
        return partition;
    }
}
  • 还要再Driver类里加上一句代码,来使用自定义分区,否则系统还是会使用默认分区
job.setPartitionerClass(partition.class);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值