Hadoop_MapReduce中Mapper類和Reduce類


在權威指南中,有個關於處理溫度的MapReduce類,具體如下:

第一部分:Map

public class MaxTemperatureMapper extends MapReduceBase 

      implements Mapper<LongWritable,Text,Text,IntWritable>{

//其他代碼

public void map(LongWritable key, Text value, OutputCollector<Text,IntWritable> output, Report reporter){

//分析一下這四個參數

該Mapper 接口是一個泛型類型,有四個形參類型,分別為:

  LongWritable key   Map函數的輸入鍵

  Text value            Map函數的輸入值

OutputCollector<Text,IntWritable> output    輸出鍵

Report reporter   輸出值

 

}

}

 

PS :Hadoop 自身提供一套可優化網絡序列化傳輸的基本類型,而不直接使用Java內嵌的類型。這些類型均在 org.apache.hadoop.io 包中。

  LongWritable 類型相當於Java中的Long類型

  Text類型相當於Java中的String類型

  IntWritable 類型相當於Java中的Integer類型

第二部分:Reduce

Reducer類的定義和使用

public class MaxTemperatureReducer extends MapReduceBase 

        implements Reducer<Text, IntWritable, Text, IntWritable>{

 

public void reduce(Text key, Iterable<IntWritabloe> values, Context context){

}

}

 

pS: reduce 函數也有四個形式參數類型用於指定輸入和輸出類型。

reduce函數的輸入類型必須匹配map函數的輸出類型。

即Text類型和IntWritable 類型。

 

第三部:運行MapReduce作業

調用Job類的方法即可。

Job對象指定作業執行規范。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM