public class Word_Reducer extends
Reducer<IntWritable, Text, IntWritable, IntWritable> {
public void reduce(Text key, Iterable<IntWritable> values, Context context)
throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum++;
}
context.write(key, new IntWritable(sum));
}
}
5条答案
按热度按时间fjaof16o1#
对于每个文件中每行中的每个单词,将(key,value)设为(filename,1),在reducer中总计1s
fnx2tebb2#
很简单。将Map器的键设为文本类型,并将字数设为键,将intwritable(1)设为值。在减速器中使用以下代码:-
它将产生你需要的输出。如果这个解决方案适合你的情况,请接受我的回答。
q43xntqr3#
我对mapreduce编程也很陌生,我把这个问题当成了一种练习。我建议使用以下Map器和还原器:
Map器:
减速器:
juzqafwq4#
我想下面应该可以:1.为每个单词在Map器中的reducer设置一个虚拟键。2.由于reducer将接收dummy作为键,并且值是iterable,因此您可以得到所有dummy记录的总和。
:-)
vecaoik15#
它可以使用计数器实现。上下文对象可以访问这些计数器。计数器在每个节点递增,然后最终聚合。