原理:
1.是什么?mapreduce作业的优化
在map端进行一次类似于reduce的操作,这种操作称为Combiner
2.为什么会有这种优化方式?
为了减少map->reduce 传输的数据量。
3.既然Combiner类似于reduce,那么它的输入数据类型和输出数据类型是什么?
Combiner处理map的结果,combiner处理的结果是reduce的输入。
那么它的输入数据类型就等于map端的输出数据类型,它的输出数据类型就等于reduce端的输入数据类型。
4.它是怎么实现的呢?
Combiner就是一个reduce
Combiner实现就要继承一个reducer
job.setCombinerClass(reducer类);
限制条件
1.不能影响map阶段的数据传送
2.它的存在与否只是影响性能
3.它的输入数据类型和输出数据类型一致