1. 程式人生 > >Hadoop系列之OutputCollector

Hadoop系列之OutputCollector

該介面的程式碼如下

public interface OutputCollector<K, V> {
    void collect(K var1, V var2) throws IOException;
}

OutputCollector 由 Hadoop 框架提供, 負責收集 Mapper 和 Reducer 的輸出資料,實現map或者reduce 函式時,只需要簡單地將其輸出的 <key,value> 對往 OutputCollector 中一丟即可,剩餘的事框架自會幫你處理好。

例如如下程式碼:

public static class Reduce extends MapReduceBase
    implements Reducer<Text, IntWritable, Text, IntWritable> {
    
    public void reduce(Text key, Iterator<IntWritable> values,
                       OutputCollector<Text, IntWritable> output, 
                       Reporter reporter) throws IOException {
      int sum = 0;
      while (values.hasNext()) {
        sum += values.next().get();
      }
      output.collect(key, new IntWritable(sum));
    }
  }