1.Combiner编程
Combiner编程的作用:
Combiners编程其实本质上就是一个Reduce,只不过它是在map阶段的reduce。它主要活动
在mapper之后和reduce之前,主要将mapper产生的大量输出提前先做一次合并或者过滤,以减少
传输到reduce的数据量,从而降低reduce的压力,提高效率。
补充:
Combiner的输入时mapper的输出,Combiner的输出是reduce的输入。Combiner绝不能改变最终的计算结果。Combiner只应该用于那种Reduce的输入key/value与输出key/value类型完全一致,且不影响最终结果的场景。比如累加,最大值等。
2.Combiner的核心编程
3.Partitioner编程
Partitioner编程的作用:
在Hadoop的MapReduce过程中,Mapper读取处理完成数据后,会把数据发送到Partitioner,由Partitioner来决定每条记录应该送往哪个reducer节点,默认使用的是HashPartitioner
应用场景:
如果事前对我们的数据以及Mapper处理后的输出数据都有一个很好的了解,那么可以控制记录送往哪个reducer进行处理,这样方便我们采取某种策略,来使reducer处理的数据量基本相同,达到一种均衡的效果。这样,对数据处理的效率也会有很大的提高。
使用前提
必须提前知道有多少个分区。一般设置的分区数量要比实际需要的分区数量大,否则会报错,当然最好相等。同时我们队数据量也要有一定了解。
4.Partitioner编程核心代码
5.Combiner和Partitioner编程完整代码
领取专属 10元无门槛券
私享最新 技术干货