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);
添加回答
舉報