Java 如何在映射器中存储值?
我是Hadoop MapReduce的新手,最近遇到了一个问题,就是如何在映射器中对输出值进行装箱。我的映射器创建一个文本、可写的输出,数据集ID作为键,元数据描述长度作为值。我的目标是将元数据长度的频率分为3组:1-200个字符、201-400个字符和401个以上的字符。输出文件如下所示:第一列是键,第二列是值-元数据的长度:Java 如何在映射器中存储值?,java,hadoop,mapreduce,aggregation,binning,Java,Hadoop,Mapreduce,Aggregation,Binning,我是Hadoop MapReduce的新手,最近遇到了一个问题,就是如何在映射器中对输出值进行装箱。我的映射器创建一个文本、可写的输出,数据集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 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
有什么办法吗?我应该作为映射清理器、合并器还是在减速器中执行?代码示例或参考其他在线资源将不胜感激。多谢各位 众所周知,数据需要分为三个存储箱。这些bin可以在映射器中静态声明,如: 现在在映射中创建一个HashMap映射。当映射器读取数据时,它将更新映射中各个bin的计数。然后在cleanup方法中编写此映射。映射器的输出是文本和IntWritable,这是映射中每个bin的计数 如果作业中有多个映射器,则可以在Reducer中聚合映射器输出,每个关键字文本的Iterable值的简单总和
Text BIN1 = new Text("1-200"); // bin-1
Text BIN2 = new Text("200-400"); // bin-2
Text BIN3 = new Text("400-..."); // bin-3