【摘要】:MapReduce编程:编写WordCount类,实现Mapper接口,实现Reducer接口,配置作业,代码测试,打包发布。其中,key为该行在文本中的偏移量,value值为这一行的内容。Map处理将分割好的〈key,value〉对作为map()方法的输入,然后由用户定义的map()方法进行Map处理,生成新的〈key,value〉对。Reduce处理首先,Reduce端接收到来自Map端的数据后,对数据进行排序,如图5-27Reduce端排序结果所示。
MapReduce编程:编写WordCount类,实现Mapper接口,实现Reducer接口,配置作业,代码测试,打包发布。
1.MapReduce编程实例解析
图5-27 WordCount实例解析
(1)输入数据
(2)文件分割
把输入的in1和in2文件通过Input Format类切分成多个splits。由于测试用的in1和in2文件较小,所以一个文件为一个split,并通过Line Recorder Reader将其中的每一行解析成〈key,value〉对,作为Map的输入,如图5-27(b)分割结果所示。其中,key为该行在文本中的偏移量,value值为这一行的内容。经过InputFormat类处理之后,in1文件和in2文件分别形成了两个〈key,value〉对。如在in1文件中,第一对中key值为0,是因为“Hello”单词位于文件头;第二对中key值为12,是因为下一行的首单词“Hello”相对整个文本处于12位置。
(3)Map处理
将分割好的〈key,value〉对作为map()方法的输入,然后由用户定义的map()方法进行Map处理,生成新的〈key,value〉对。而且,Map端会将这些结果按照Key值进行如图5-27(c)Map方法输出所示map()方法的输出结果。
(4)Combine过程
得到map()方法输出的〈key,value〉对之后,执行Combine过程,合并中间结果具有相同key值的键值,得到Map端的最终输出结果。
(5)Reduce处理
首先,Reduce端接收到来自Map端的数据后,对数据进行排序,如图5-27(e)Reduce端排序结果所示。然后,再交由用户自定义的reduce()方法进行处理,得到新的〈key,value〉对,作为WordCount的输出结果。
2.编写WordCount类
3.实现Mapper接口(www.chuimin.cn)
4.实现Reducer接口
5.配置作业
6.代码测试
7.打包发布
图5-28 打包发布A
图5-29 打包发布B
图5-30 打包发布C
相关推荐