我的文件格式如下:
1,5321234567
1,5324564321
1,5324564321
2,1234567643
2,1234567666
2,9875422345
3,5344435345
3,5344435345
3,5344435345
3,5344435345
3,5345345312
3,8767564564
在缩小过程结束时,我想要第二个字段的不同计数,第一个字段是关键字。 e.g。
1,2
2,3
3,3-
为此目的,Java中最简单的map和reduce函数是什么?
TNX。
答案 0 :(得分:0)
如果我理解你的目标,你需要:
所以最简单的方法就是这样:
假设输入为{A,B}
MAP 1:
Output Key : {A,B}
Output Value: 1
REDUCE 1:
Input Key : {A,B}
Input Values: {1,1,1,...}
Output Key : A
Output Value: B
MAP 2:
Output Key : A
Output Value: 1
REDUCE 2:
Input Key : A
Input Values: {1,1,1,...}
Output Key : A
Output Value: SUM of all the values
答案 1 :(得分:-1)
据我所知,您需要计算密钥的唯一值,而不是保留值。 我们可以通过从记录创建密钥来简单,休息hadoop framwork将负责为您排序唯一的记录。
map (IntWritable key, Text value, Context context) {
context.write(value, new IntWritable(1));
}
reduce (Text key, Iterable<IntWritable> values, Context context) {
long count = 0;
for (Iterator<IntWritable> iterator = values.iterator(); iterator.hasNext();) {
count+= iterator.next().get();
}
context.write(key, new LongWritable(count));
}
Reducer也可以用作组合器。
答案 2 :(得分:-2)