正在回答 回答被采纳积分+1
1回答
徐老师
2022-08-30 11:12:02
PS:本问题来自于课程内部QQ群讨论问题。
combiner主要的功能就是在map端提前执行reduce端的计算逻辑。
在求取平均值时,因为添加的Combiner组件是与reduce组件具有相同的逻辑,会提前求一次平均值后传给reduce类,导致求取的平均值错误。
例如,求0、20、10、25和15的平均值:
1:直接使用Reduce求平均值Average(0,20,10,25,15),得到的结果是14
2:如果先使用Combiner分别对不同Mapper结果求平均数(假设有2个map任务),Average(0,20,10)=10,Average(25,15)=20,再使用Reducer求平均值Average(10,20),得到的结果为15
所以:求平均值并不适合使用Combiner。
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星