在二次排序中,例如年份和温度。我们把年份和温度作为一个组合键。并打印第一个键,值对打印当年最高气温。
1900 35°c
1900 34°c
1900 34°c
...
1901 36°c
1901 35°c
protected void reduce(IntPair key, Iterable<NullWritable> values,
Context context) throws IOException, InterruptedException {
context.write(key, NullWritable.get());
}
现在,如果我们想打印特定年份的第二个最大值,我们怎么做呢。
1条答案
按热度按时间wbrvyc0a1#
这样的设置你不能这么做
temperature
还需要设置为值,因此reduce
方法签名需要更改为:二次排序的目的是使用复合键对值进行排序,以便
NullWritable
因为这个值会阻止它工作。一旦在值中有了温度,就可以遍历它们并忽略第一个值,从而得到第二个最大值。例如:既然温度在这些值中,就可以遍历它们,忽略第一个,写出第二个,然后退出。
注意:此代码假定没有重复的温度。