我的问题是关于在mapreduce中进行比较。
这是我的天气数据样本
0067011990999991950051507004+68750+023550FM-12+038299999V0203301N00671220001CN9999999N9-04001+99999999999
0043011990999991950051512004+68750+023550FM-12+038299999V0203201N00671220001CN9999999N9+04221+99999999999
0043011990999991950051518004+68750+023550FM-12+038299999V0203201N00261220001CN9999999N9+04111+99999999999
0043012650999991949032412004+62300+010750FM-12+048599999V0202701N00461220001CN0500001N9+01111+99999999999
0043012650999991949032418004+62300+010750FM-12+048599999V0202701N00461220001CN0500001N9+04781+99999999999
我能够处理,我得到了一年内最高温度的结果。
输出:
1901 46
1902 39
1910 46
1911 44
1915 48
1916 30
1949 47
1950 42
1960 35
1970 36
1980 35
1990 45
2000 46
是否可以比较上述年份的最高温度(根据我们需要处理的mapreduce的输出)?
请告诉我所有可能的方法。
我很困惑,因为这里的键是唯一的,值是唯一的。
4条答案
按热度按时间4xy9mtcn1#
不明白,你想得到输出中的最大值是48吗?
如果是,只需编写一个Map器,定义一个变量max,迭代输出文件,如果找到大于max的值,只需将其设置为max,那么max就是最大值。
qlzsbp2j2#
代码如下:
hrysbysz3#
您可以在reduce函数上方的reducer类中用初始值定义一个私有静态变量max。然后将reduce函数中的这个max变量与获得的值对进行比较,直到扫描完所有键和值对。一旦一切都完成了,它就会作为输出键发出。
lqfhib0f4#
拉吉:如果我理解正确的话,你有一个数据集,包含了不同年份的温度记录,你写了一个Map,得到了每年的最高温度。现在从这个记录,你想写一个减速机来获得最大值吗?
你可以写一些类似这样的东西来比较值:
希望这有帮助!
ps:我是在Hadoop2上写的,如果你使用的是早期版本,你可能会考虑使用hadoop类。有些可能会被否决。
谢谢