1. 程式人生 > >[MapReduce_5] MapReduce 中的 Combiner 元件應用

[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】