我是hadoopmapreduce的新手,最近遇到了一个问题:如何在Map器中对输出值进行装箱。我的Map器创建了一个文本的、可写的输出,数据集id作为键,元数据描述的长度作为值。我的目标是将元数据长度的频率分为3组:1-200个字符、201-400个字符和401+个字符。输出文件如下所示(第一列是键,第二列是值-元数据的长度):
1 256
2 344
3 234
4 160
5 432
6 121
7 551
8 239
9 283
10 80
...
基于上述值,装箱结果应显示:
1-200 3
201-400 5
401-... 2
有什么办法吗?我应该做它作为Map清理,组合器还是在一个缩小?代码示例或参考其他在线资源将不胜感激。谢谢您。
1条答案
按热度按时间zy1mlcev1#
众所周知,数据需要分为三个存储箱。这些bin可以在
Mapper
比如:现在创建一个
HashMap<Text, Integer> map
在Map上。当Map程序读取数据时,它将更新相应数据的计数bin
在map
. 那就写这个map
在cleanup()
方法。Map器的输出是Text
以及IntWritable
(从map
).如果作业中有多个Map器,则
Mapper
输出可以在Reducer
,简单求和Iterable<IntWritable>
每个键的值(Text
).