Hadoop Combiner 合并

Hadoop Combiner 合并

1. 概念

  1. Combiner是MR程序中Mapper和Reducer之外的一种组件。
  2. Combiner组件的父类就是Reducer
  3. Combiner和Reducer的区别在于运行的位置
    Combiner是在每一个MapTask所在的节点运行;
    Reducer是接收全局所有Mapper的输出结果;
  4. Combiner的意义就是对每一个MapTask的输出进行局部汇总,以减小网络传输量。
  5. Combiner能够应用的前提是不能影响最终的业务逻辑,而且,Combiner的输出kv应该跟Reducer的输入kv类型要对应起来。

2. 自定义 Combiner 实现步骤

  1. 自定义一个 Combiner 继承 Reducer,重写 Reduce 方法
public class WordCountCombiner extends Reducer<Text, IntWritable, Text, 
IntWritable> {
 	private IntWritable outV = new IntWritable();
 	@Override
	 protected void reduce(Text key, Iterable<IntWritable> values, Context 
	context) throws IOException, InterruptedException {
 		int sum = 0;
 		for (IntWritable value : values) {
 			sum += value.get();
 		}
 
 		outV.set(sum);
 
 		context.write(key,outV);
 	} 
 }
  1. job.setCombinerClass(WordCountCombiner.class);
job.setCombinerClass(WordCountCombiner.class);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值