[MapReduce_5] MapReduce 中的 Combiner 组件应用


0. 说明

  Combiner 介绍 &&  在 MapReduce 中的应用

 

 


1. 介绍

  Combiner:

  Map 端的 Reduce,有自己的使用场景

  在相同 Key 过多的情况下,在 Map 端进行的预聚合,大大缓解了网络间的 K-V 全分发

 

  Combiner 适用场景:

  1. 最大值
  2. 求和
  3. 最小值

 

  Combiner 不适用平均值的计算


 2. 结合 Combiner 实现 Word Count

  在 [MapReduce_1] 运行 Word Count 示例程序 代码基础上在 WCApp.java 中添加了以下内容

  

 

 


 

 3. 结合 Combiner 实现最高气温统计

   在 [MapReduce_add_2] MapReduce 实现年度最高气温统计 代码基础上进行改进

 

  【3.1 编写 MaxTempCombiner.java】

package hadoop.mr.combiner;

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

import java.io.IOException;

/**
 * Combiner 类
 */
public class MaxTempCombiner extends Reducer<Text, IntWritable, Text, IntWritable> {
    @Override
    protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
        Integer max = Integer.MIN_VALUE;

        // 得到最大值
        for (IntWritable value : values) {
            max = Math.max(max, value.get());
        }

        // 输出年份与最大温度
        context.write(key, new IntWritable(max));
    }
}

 

  【3.2 修改 MaxTempApp.java】

   

 

 


 

posted @ 2018-11-05 23:50  山间一棵松  阅读(242)  评论(0编辑  收藏  举报