MapReduce程序开发

1、Demo:WordCount单词计数
/root/training/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar

执行:
hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /input/data.txt /output/mr/wc1213

分析WordCount程序数据处理的过程(非常重要)

2、开发自己的WordCount程序
需要包含的jar:
/root/training/hadoop-2.7.3/share/hadoop/common
/root/training/hadoop-2.7.3/share/hadoop/common/lib

/root/training/hadoop-2.7.3/share/hadoop/mapreduce
/root/training/hadoop-2.7.3/share/hadoop/mapreduce/lib

再举一个例子:开发一个MapReduce:求每个部门的工资总额
数据:员工表
SQL> select deptno,sum(sal) from emp group by deptno order by deptno;

DEPTNO SUM(SAL)
---------- ----------
10 8750
20 10875
30 9400

3、MapReduce的一些高级特性
(1)序列化:类似Java的序列化
如果一个类实现了的Hadoop的序列化机制(接口:Writable),这个类的对象就可以作为输入和输出的值
举例1:使用Employee类来封装员工信息,并且作为Map和Reduce的输入和输出

一定注意:序列化的顺序和反序列化的顺序要一致

举例2:使用序列化Employee重写 求每个部门的工资总额

(2)排序:注意:按照key2进行排序

默认排序:数字 升序
字符串 字典顺序
对象的排序:按照员工的薪水排序

如果要改变默认的排序规则,需要创建一个自己的比较器

(3)分区:Partition,默认情况下,MapReduce只有一个分区,意思是:只有一个输出文件
(4)合并:Combiner,在Mapper端,先做一次Reducer,用于减少输出到Reducer中的数据,从而提高效率
(5)MapReduce的核心:Shuffle(洗牌)

posted @ 2018-02-09 15:39  好奇的小码农  阅读(227)  评论(0)    收藏  举报