分别举例什么情况要使用 combiner,什么情况不使用?

简介: 分别举例什么情况要使用 combiner,什么情况不使用?

Combiner 会对每一个 MapTask 的输出进行局部汇总,以减少 IO 传输,提高程序的执行效率。但是使用时必须不能影响原有的业务处理结果。

1. 求和,求加减的时候可以使用 combiner,减少 map 的输出,缓解网络 IO

2. 求平均值,求乘除的时候就不能使用 combiner,因为 combiner 的时候会使用 reduce 的逻辑,先行求了平均值,导致与业务原有的处理结果不一致。

 

知识补充:

1.Combiner 不能用于求数据的平均值,因为统计前和统计后进行除法会有误。但可以用于数据的加减,因为统计前和统计后不会对加减造成影响。

  1. 如果程序中没有了 Reduce 的话,那就别设置 Combiner 了,因为 shuffle 是在 map 输出和 reduce 输入之间的,没有 reduce 的话,数据直接就从 map 输出了,不会有 shuffle 的阶段。
  2. 实际上,reduce 就相当于 Combiner 了,reduce 的功能和 Combiner 的功能是一样的,所以直接调用 reduce 就可以完成 Combiner 的合并过程:job.setCombinerClass (wordCountReducer.class)
相关文章
|
6月前
|
分布式计算 负载均衡 数据处理
MapReduce中的Combiner函数的作用和使用场景
MapReduce中的Combiner函数的作用和使用场景
277 0
|
SQL 数据挖掘 数据库
HiveSQL分位数函数percentile()使用详解+实例代码
HiveSQL分位数函数percentile()使用详解+实例代码
4855 0
HiveSQL分位数函数percentile()使用详解+实例代码
|
6月前
|
分布式计算
MapReduce中的Map和Reduce函数分别是什么作用?
MapReduce中的Map和Reduce函数分别是什么作用?
326 0
|
12月前
|
流计算
reduce补充二
reduce补充二
46 0
|
索引
reduce的介绍及用法
reduce的介绍及用法
124 0
|
分布式计算 算法 Ubuntu
在RDD上执行描述性统计操作
在RDD上执行描述性统计操作
|
JavaScript 前端开发 索引
reduce你真的会用吗
reduce你真的会用吗
|
SQL Oracle 关系型数据库
MySQL查询后10条数据并顺序输出
MySQL查询后10条数据并顺序输出
257 0
|
缓存 分布式计算 Hadoop
利用采样器实现mapreduce任务输出全排序
采样器是hadoop内自带的一个可以对目标文件部分数据进行提取的工具类,以方便我们对这些采样的数据做一些参考或者处理。hadoop提供了多种采样器供我们使用,以满足不同的需求。另外,采样器不同于普通mapreduce操作。
1135 0