MapReduce —— Mapper 阶段代码编写

每次过一段时间就会忘记 MapReduce 的代码编写步骤 ,所以记录一下,方便以后翻看

现有一个案例:

现在有一堆关于手机号的数据,需要从中获取每个手机号对应的上行流量,下行流量,以及总流量(总流量=上行流量+下行流量)

原数据类型大概如下:

在这里插入图片描述

这里把手机号为Key,其他(上行,下行,总流量)为value,因为value不只是一个参数,所以需要自定义一个Bean对象,用来传value

具体的自定义Bean对象的相关代码在这篇文章里写了:
自定义Bean对象(还是这个手机号流量案例为主)

下面是对应Mapper阶段代码:(具体的导入的包没写)

public class FlowCountMapper extends Mapper<LongWritable,Text,Text,FlowBean>{
 
 Text k=new Text(); 
 FlowBean v=new FlowBean();
 
 //重写map方法
protected void map(LongWritable key , Text value ,Context context)throws IOException{
 // 1. 获取一行
 String line = value.toString();//(把序列化转换成String类型,为了方便切割)
 
 // 2.切割 \t
 String[] word=line.split("\t");

 // 3.封装对象
 //Text k=new Text(); 在这里创建对象的话,每循环就创建一个对象
 //FlowBean v=new FlowBean(); 所以把创建对象的语句放在方法外面
 
 k.set(word[1]);//封装手机号
 
 long upFlow=Long.parseLong(word[word.length-3]);//倒数第三列,上行流量
 //因为upFlow是long类型,但截取的word是string 类型,所以需要类型转换
 long downFlow=Long.parseLong(word[word.length-2]);//倒数第二列,下行流量

 v.setUpFlow(upFlow); //把上行流量值传进去
 v.setDownFlow(downFlow);//把下行流量传进去
 
 // 4.写出
 context.write(k,v); //这里的v就是自定义的Bean对象

Mapper阶段编写共分四大步骤:

  1. 获取一行
  2. 切割
  3. 封装对象(就是New出key和value的对象,然后就是k.set( ) ,v.set( ) )
  4. 写出(提交到缓冲区)

本案例Reducer阶段代码
本案例驱动类Driver阶段代码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值