• Combiner合并


    Combiner是MR程序中Mapper和Reducer之外的一种组件

    Combiner组件的父类就是Reducer

    Combiner和Reducer的区别在于运行位置

    Combiner是在每一个MapTask所在的节点运行

    Reducer是接受全局所以Mapper的输出结果

    Combiner 的意义就是对每一个的输出结果进行汇总

     Combiner 能够应用的前提是不会影响业务逻辑

    如何自定义一个Combiner

    1. public class WordCountCombiner extends Reducer {
    2. private IntWritable outV = new IntWritable();
    3. @Override
    4. protected void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException {
    5. int sum = 0;
    6. for (IntWritable value : values) {
    7. sum += value.get();
    8. }
    9. outV.set(sum);
    10. context.write(key,outV);
    11. }
    12. }

    在Job中设置驱动

    job.setCombinerClass(WordCountCombiner.class);

    Combiner合并案例

     需求

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

    数据输入

    hello.txt

    期望输出数据

      期望:Combine输入数据多,输出时经过合并,输出数据降低。

     添加一个

    1. import org.apache.hadoop.io.IntWritable;
    2. import org.apache.hadoop.io.Text;
    3. import org.apache.hadoop.mapreduce.Reducer;
    4. import java.io.IOException;
    5. public class WordCountCombiner extends Reducer {
    6. private IntWritable outV = new IntWritable();
    7. @Override
    8. protected void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException {
    9. int sum = 0;
    10. for (IntWritable value : values) {
    11. sum += value.get();
    12. }
    13. //封装outKV
    14. outV.set(sum);
    15. //写出outKV
    16. context.write(key,outV);
    17. }

    在Driver类中指定Combiner

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

    方案二:

    因为Combiner 是reducer的子类

    将WordCountReducer作为Combiner

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

  • 相关阅读:
    为Ubuntu18.04云服务器创建sudo用户
    SpringMVC系列-4 参数解析器
    【树莓派不吃灰】Linux篇⑩ 学习例行性工作排程(核心概念)
    多线程间的5种通信方式
    推特自动发帖,快速提升人气
    Analyzing and Leveraging Decoupled L1 Caches in GPUs
    Vue中关于this指向的问题
    多校数学部分补题
    gflags学习笔记(一)gflags的介绍和安装(ubuntu环境)
    设计模式之解释器模式
  • 原文地址:https://blog.csdn.net/m0_65136138/article/details/126213345