一、Combiner 合并介绍
1、Combiner 是什么?
(1) Combiner 是 MR 程序中 Mapper 和 Reducer 之外的一种组件。
(2) Combiner 组件的父类是 Reducer。
(3) Combiner 和 Reducer 的区别在于运行的位置
A、Combiner 是在每一个 MapTask 所在的节点运行
B、Reducer 是接收全局所有 Mapper 的输出结果
(4) Combiner 的意义就是对每一个 MapTask 的输出进行局部汇总,以减小网络传输量。
(5) Combiner 能够应用的前提是不能影响最终的业务逻辑,而且,Combiner 的输出 kv 应该和 Reducer 的输入 kv 类型要对应起来。
二、自定义 Combiner 实现步骤
1、自定义一个 Combiner 继承 Reducer,重写 Reduce 方法
public class WordcountCombiner extends Reducer<Text, IntWritable, Text,IntWritable>{
@Override
protected void reduce(Text key, Iterable<IntWritable> values,Context context)