gpt4 book ai didi

hadoop - Mapreduce - 无法获得正确的 key

转载 作者:可可西里 更新时间:2023-11-01 15:41:31 25 4
gpt4 key购买 nike

您好,我正在编写 map reduce 代码来查找最高温度。问题是我获得了最高温度但没有相应的 key 。

public static class TemperatureReducer extends Reducer<Text,IntWritable,Text,IntWritable>{

Text year=new Text();

int maxTemperature=Integer.MIN_VALUE;
public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {

for(IntWritable valTemp:values) {
maxTemperature=Math.max(maxTemperature, valTemp.get());
}

//System.out.println("The maximunm temperature is " + maxTemperature);
context.write(year, new IntWritable(maxTemperature));
}
}

映射器想像

1955  52
1958 7
1985 22
1999 32

等等。

它正在覆盖 key 并打印所有数据。我只想要最高温度及其年份。

最佳答案

我发现您的代码示例存在一些问题:

  1. 在 reduce 方法中重置 maxTemperature(作为第一条语句),此时你有一个错误,它会输出所有前面的键/值所见的最高温度

  2. 您在哪里配置year 的内容?事实上你不需要,只需调用 context.write(key, new IntWritable(maxTemperature); 因为输入键是年份

  3. 您可能希望创建一个 IntWritable 实例变量并重新使用它,而不是在写出输出值时创建一个新的 IntWritable(这是为了提高效率,而不是问题的潜在原因)

关于hadoop - Mapreduce - 无法获得正确的 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10328523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com