package com.ibm.dw61;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
public class MaxTempReducer extends
Reducer<Text, IntWritable, Text, IntWritable> {
public void reduce(Text key, Iterable<IntWritable> values, Context context)
throws IOException, InterruptedException {
int maxTemp = Integer.MIN_VALUE;
for (IntWritable value: values) {
maxTemp = Math.max(maxTemp, value.get());
}
context.write(key, new IntWritable(maxTemp));
}
}
问题:
1) int maxTemp = Integer。MIN_VALUE <-----这一行似乎是maxTemp变量的初始化。为什么编码器不将其初始化为零?整数。MIN_VALUE给出-2147483648。最低温度不可能达到零下100度。
2)上下文。write(key, new IntWritable(maxTemp) <------这是最终结果。关键字是月,maxTemp是该月的最高温度。为什么"新"字需要maxTemp,而不是关键字(月)?
1) int maxTemp = Integer。MIN_VALUE
int MIN_VALUE
保存最小值的常数int类型可以有-231.
2)上下文。write(key, new IntWritable(maxTemp)
为什么Hadoop需要像Text或IntWritable这样的类,而不是String或Integer?
希望对大家有所帮助