Combine 这个类它继承的是reducer 在单个词频统计这个任务中和reducer除了名字外几乎没有不同的地方。
Combiner继承于Reducer类,但是二者还是有区别的
Combiner只适用于“小数据集的计算结果可以加快在大数据集之上同样的计算”这样的任务类型,比如求和、取最大、最小
当对于求和、取最大和最小这样的Combiner适合的计算任务,可以直接使用Reducer类来当Combiner
Combiner并一定都需要,而Reducer一般都有
二.实现统计文本的单词总个数
把第一个mapreduce 的结果作为第二个mapreduce的输入,这里再写一个mapper。
本人最开始的mapper类写法。把整个whilez都注释掉了,没有注意到context write 那个操作也被注释掉了,结果就是,程序跑下来没有报错,但是第二个job的输出是空的什么都没有。
后来发现没有write进去任何东西,修改。
设置第一个job的输出作为第二个job的输入。
注意这里还有个坑,一开始的时候我把第一个job写完后把system exit也写在了后面,这样的后果就是第二个job根本就没有执行!!!
System exit只能写一个返回最后一个job的执行结果就好,写在前面就是直接中断了后面程序的执行。
结果