public static class TokenCounterReducer extends
Reducer<Text, IntWritable, Text, IntWritable> {
public void reduce(Text key, Iterable<IntWritable> values,
Context context) throws IOException, InterruptedException {
FileSystem fs = FileSystem.get(context.getConfiguration());
FSDataOutputStream out = fs.create(new Path("/path/to/your/file"));
//do the manipulation and write it down to the file
out.write(......);
int sum = 0;
for (IntWritable value : values) {
sum += value.get();
}
context.write(key, new IntWritable(sum));
}
}
3条答案
按热度按时间hgb9j2n61#
不知道你想做什么。是否要将不同类型的输出发送到不同的输出格式?选中此选项如果要过滤或对贴图中的值进行操作,则reduce是执行此操作的最佳位置。
ckx4rj1h2#
你可以利用
ChainReducer
创建窗体的作业[MAP+ / REDUCE MAP*]
i、 先是几个Map,然后是一个减速机,然后是另一系列Map,这些Map从处理减速机的输出开始。最终输出是系列中最后一个Map器的输出。或者,您可以有多个按顺序开始的作业,前一个作业的减速机的输出是下一个作业的输入。但是,这会导致不必要的io,以防您对中间输出不感兴趣
wvt8vs2t3#
在reducer中执行任何操作,创建一个fsdataoutputstream并通过它写入输出。
例如: