mapreduce中的context類

在Mapper中的map、以及Reducer中的reduce都有一個Context的類型
1 public void map(Object key, Textvalue, Context context)
2 throwsOException,InterruptedException{
3 StringTokenizer itr = new StringTokenizer(value.toString());
4 while (itr.hasMoreTokens()) {
5 word.set(itr.nextToken());
6 context.write(word, one);
7 }
8 }
9
10 public void reduce(Text key, Iterable values,Contextcontext)
11 throws IOException,InterruptedException {
12 int sum = 0;
13 for (IntWritable val : values){
14 sum += val.get();
15 }
16 result.set(sum);
17 context.write(key, result);
18 }
可以瞭解到,context應該是用來傳遞數據以及其他運行狀態信息,map中的key、value寫入context,讓它傳遞給Reducer進行reduce,而reduce進行處理之後數據繼續寫入context,繼續交給Hadoop寫入hdfs系統。
從繼承結構可以看出MapContext與ReduceContext均繼承TaskInputOutputContext,沒有重寫繼承而來的方法,所以它們繼承的都是一致的)
java.lang.object
org.apache.hadoop.mapreduce.JobContext
org.apache.hadoop.mapreduce.TaskAttemptContext
org.apache.hadoop.mapreduce.TaskInputOutputContext<KEYIN,VALUEIN,KEYOUT,VALUEOUT> org.apache.hadoop.mapreduce.MapContext<KEYIN,VALUEIN,KEYOUT,VALUEOUT> org.apache.hadoop.mapreduce.ReduceContext<KEYIN,VALUEIN,KEYOUT,VALUEOUT>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章