1 回答

TA贡献1799条经验 获得超9个赞
合并器必须能够接受来自映射器的数据,并且必须输出可用作化简器输入的数据。在本例中,“合并器”输出类型为 ,但“化简器”输入类型为 ,因此它们不匹配。<Text, Text><Text, IntWritable>
对于这个问题,您实际上并不需要MapReduce,因为您在每条线上都有每年的所有可用数据,并且您不需要在行之间进行比较。
String line = value.toString();
String[] elements = line.split("\\s");
Text year = new Text(elements[0]);
int maxTemp = INTEGER.MIN_VALUE;
int minTemp = INTEGER.MAX_VALUE;
int temp;
for(int i = 1; i<elements.length;i++) {
temp = Integer.parseInt(elements[i])
if (temp < minTemp) {
minTemp = temp;
} else if (temp > maxTemp) {
maxTemp = temp;
}
}
System.out.println("For year " + year + ", the minimum temperature was " + minTemp + " and the maximum temperature was " + maxTemp);
添加回答
举报