Shuffle中的Combiner合并
Combiner父类是Reducer
Combiner是在每一个MapTask所在的节点运行,Reducer是接收全局所有Mapper的输出结果
Combiner能够应用的前提是不能影响最终的业务逻辑,在累加的情形下使用,但求平均值的时候不能使用combiner
Combiner的实现过程
1.自定义一个Combiner继承Reducer,重写Reduce方法
public class WordcountCombiner extends Reducer<Text, IntWritable, Text,IntWritable>{
//逻辑操作
...
//写出
context.write(key,value)
}
2.在job驱动类中设置,job.setCombinerClass(WordcountCombiner.class);
因为combiner和reducer的操作常常一致,所以可以将reducer作为combiner在wordcountDriver驱动类中指定
job.setCombinerClass(WordcountReducer.class);