【发布时间】:2018-03-10 16:12:02
【问题描述】:
我正在尝试修改现有代码,我设法打印键(分组)和值(出现次数),但我只需要提取一个具有最大值(出现次数)的键。我不是java专家,所以请原谅我没有正确解释这个问题。
当前输出:
994290 5
994380 33
994410 1
994440 11
995010 2
995030 5
预期:
994380 33
代码
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
public class MaxTemperatureReducer
extends Reducer<Text, IntWritable, Text, IntWritable> {
@Override
public void reduce(Text key, Iterable<IntWritable> values,
Context context)
throws IOException, InterruptedException {
int count = 0;
for (IntWritable value : values) {
if(value.get() == 9999)
count++;
}
context.write(key, new IntWritable(count));
}
}
【问题讨论】:
-
你的地图在代码中的什么位置?
-
我认为您应该将问题更改为 Java MAP-REDUCE,而不是 Java 集合 Map
-
改了问题,我不重复了。
-
这不是重复的(因为 Varun 更改了标题),这是一个与 Hadoop Map Reduce 相关的问题,它不像从 java Map 中获取最大值那么简单。 Map Reduce 是分布式的,会带来不同的问题。