MapReduce-流量统计求和-分区代码实现

需求三: 手机号码分区

在需求一的基础上,继续完善,将不同的手机号分到不同的数据文件的当中去,需要自定义分区来实现,这里我们自定义来模拟分区,将以下数字开头的手机号进行分开

135 开头数据到一个分区文件
136 开头数据到一个分区文件
137 开头数据到一个分区文件
其他分区

自定义分区

package cn.learn.mapreduce_flowcount_partition;

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

public class FlowPartition extends Partitioner<Text,FlowBean> {
    @Override
    public int getPartition(Text text, FlowBean flowBean, int i) {
        //判断手机号以哪个数字开头然后返回不同的分区编号
        if(text.toString().startsWith("135")){
            return  0;
        }else  if(text.toString().startsWith("136")){
            return  1;
        }else  if(text.toString().startsWith("137")){
            return  2;
        }else{
            return  3;
        }
    }
}

作业运行添加分区设置

job.setPartitionerClass(FlowPartition.class);

修改输入输出路径, 并放入集群运行

TextInputFormat.addInputPath(job,new
Path("hdfs://node01:8020/partition_flow/"));
TextOutputFormat.setOutputPath(job,new
Path("hdfs://node01:8020/partition_out"));

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值