首页
学习
活动
专区
工具
TVP
发布

Combiner和Partitioner编程

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编程完整代码

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180819G009Z600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券