Map 端程序编写

简介: Map 端程序编写

**分析**:以需求一的输出结果作为排序的输入数据,自定义FlowBeanSort,以 FlowBeanSort 为 Map 输出的 key,以手机号作为 Map 输出的 value,因为 MapReduce 程序会对 Map 阶段输出 的key 进行排序。具体实现如下所示:


// 输入数据是上一个统计程序的输出结果,已经是各个手机号的总流量信息publicclassFlowSumSortMapperextendsMapper<LongWritable, Text, FlowBeanSort, Text> {
@Overrideprotectedvoidmap(LongWritablekey, Textvalue, Mapper<LongWritable, Text, FlowBeanSort, Text>.Contextcontext)
throwsIOException, InterruptedException {
// (1)获取一行文本的内容,并将其转换为String类型,之后按照分隔符“\t”进行切分String[] splits=value.toString().split("\t");
// (2)取出手机号Stringtelephone=splits[0];
// (3)封装对象FlowBeanSortfbs=newFlowBeanSort();
fbs.setUpFlow(Long.parseLong(splits[1]));
fbs.setDownFlow(Long.parseLong(splits[2]));
fbs.setSumFlow(Long.parseLong(splits[3]));
// (4)将封装的fbs对象作为key,将手机号作为value,分发给Reduce端context.write(fbs, newText(telephone));
    }
}

- **KEYIN**:是指框架读取到的数据的key的类型,在默认的InputFormat下,读到的key是一行文本的起始偏移量,所以key的类型是Long,对应 Hadoop 中的 LongWritable

- **VALUEIN**:是指框架读取到的数据的value的类型,在默认的InputFormat下,读到的value是一行文本的内容,所以value的类型是String,对应 Hadoop 中的 Text

- **KEYOUT**:用户自定义逻辑方法返回数据中key的类型,由用户业务逻辑决定,在此程序中,我们输出的key是封装并实现了自定义排序的流量信息类 FlowBeanSort

- **VALUEOUT**:用户自定义逻辑方法返回数据中value的类型,由用户业务逻辑决定,在此程序中,我们输出的 value 是手机号,所以是String,对应 Hadoop 中的 Text

相关文章
|
5月前
|
存储 安全 测试技术
【Go语言精进之路】构建高效Go程序:了解map实现原理并高效使用
【Go语言精进之路】构建高效Go程序:了解map实现原理并高效使用
60 3
|
Java
编写Java程序,使用List集合和Map集合输出 市和区
编写Java程序,使用List集合和Map集合输出 市和区
128 0
编写Java程序,使用List集合和Map集合输出 市和区
|
分布式计算 Hadoop Java
|
分布式计算 Hadoop Android开发
eclipse 运行MapReduce程序错误异常汇总(解决Map not fount)
错误一: Error: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class wordCount.wordCount$Map not foundat org.
1524 0
|
Java
分享非常有用的Java程序 (关键代码)(五)---把 Array 转换成 Map
原文: 分享非常有用的Java程序 (关键代码)(五)---把 Array 转换成 Map   import java.util.Map; import org.
781 0