黑猴子的家:MapReduce WordCount 局部汇总(Combiner)

统计过程中对每一个maptask的输出进行局部汇总,以减小网络传输量即采用Combiner功能

1、分析

2、方案一

1)增加一个WordcountCombiner类继承Reducer

import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

public class WordcountCombiner extends Reducer<Text, IntWritable, Text, IntWritable>{

    @Override
    protected void reduce(Text key, Iterable<IntWritable> values,
            Context context) throws IOException, InterruptedException {

        int count = 0;
        for(IntWritable v :values){
            count += v.get();
        }
        
        context.write(key, new IntWritable(count));
    }
}

2)在WordcountDriver驱动类中指定combiner

//指定需要使用combiner,以及用哪个类作为combiner的逻辑
job.setCombinerClass(WordcountCombiner.class);

3、方案二

1)将WordcountReducer作为combiner在WordcountDriver驱动类中指定

//指定需要使用combiner,以及用哪个类作为combiner的逻辑
job.setCombinerClass(WordcountReducer.class);

2)运行程序

4、基于wordcount案例

https://www.jianshu.com/p/c8726f1ccd8f

5、Code -> GitHub

https://github.com/liufengji/hadoop_mapreduce.git

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • MapReduce工作流程 流程图如下 解释上面的流程是整个mapreduce最全工作流程,但是shuffle过程...
    ZFH__ZJ阅读 630评论 0 3
  • 要是你是个Java开发,那么你肯定听说过MapReduce,下面就来看看这个东东吧 一、简介 MapReduce:...
    帅可儿妞阅读 302评论 0 0
  • MapReduce执行流程 MapReduce的执行步骤 1、Map任务处理 1.1 读取HDFS中的文件。每一行...
    依天立业阅读 2,394评论 0 8
  • 数据切片和MapTask并行度决定机制 1)一个Job的Map阶段并行度由客户端在提交Job时的切片数决定 2)每...
    bullion阅读 859评论 0 1
  • 原作者:轻舞流光 又是一阵寒风 枯叶落在北方的小城 半扇柴门前 十里冰雪 微弱的炉火 朦胧的看着一缕青烟消散 不再...
    寒酌小醅阅读 250评论 0 1

友情链接更多精彩内容