多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 简介 combiner要做的就是在每个map传输的时候,就把数据先聚合下,然后再传输 不然数据会一条一条传输,会很占用IO性能 **但是要注意,用combiner,不用影响你的业务逻辑** 注意他的调用次数不一定,map阶段小文件溢出的时候可能会调用多次,reduce阶段收到数据的时候可能也会调用 比如对数据求平均值,这边就对业务有影响了 ![](https://box.kancloud.cn/c2e4ea88878d6257ec69eaee5fd4ef74_886x539.png) # 写法 combiner组件的父类就是Reducer 然后写好了,在任务驱动那边写 ~~~ //设置combainer job.setCombinerClass(WorldCountCombiner.class); ~~~ 如果combiner写的和reducer一样,这边也可以写reducer # combiner和reducer的区别 * combiner是在每一个maptask所在的节点运行,意义在于对每一个maptask的输出进行局部汇总,减少网络传输量 * reducer是接收全局所有Mapper的输出结果