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

相关文章
|
1月前
|
存储 C++ 容器
在C++语言中map的作用
在C++语言中map的作用
17 1
|
1月前
|
存储 C++
C++STL模板之——list(简化源码,模拟源码)
C++STL模板之——list(简化源码,模拟源码)
|
5月前
|
Java Python
java调用python脚本并传递参数list
java调用python脚本并传递参数list
|
8月前
|
Java Android开发 云计算
踏出第一步:编写并运行你的第一个Java程序
踏出第一步:编写并运行你的第一个Java程序
248 0
|
存储 C++ 容器
C++ 第九节——map/set(用法+底层原理+模拟实现)
们需要知道的是,Map和Set的底层都是红黑树。
566 1
C++ 第九节——map/set(用法+底层原理+模拟实现)
|
Java
Java 将list集合按照指定大小进行分割 方便使用多线程处理【项目】
Java 将list集合按照指定大小进行分割 方便使用多线程处理【项目】
223 0
|
分布式计算 Hadoop
|
Java
编写Java程序,使用List集合和Map集合输出 市和区
编写Java程序,使用List集合和Map集合输出 市和区
107 0
编写Java程序,使用List集合和Map集合输出 市和区
|
Java
编写Java程序,使用Set实现不重复添加用户
编写Java程序,使用Set实现不重复添加用户
580 1
|
Java
编写Java程序,利用List维护用户信息
编写Java程序,利用List维护用户信息
209 0
编写Java程序,利用List维护用户信息