【发布时间】:2018-09-10 17:46:36
【问题描述】:
我有一个生成几十行的映射器类。然后通过 mapreduce 内部框架对该输出进行排序和合并。在这个排序之后,我只想让减速器输出前 5 条记录。我怎样才能做到这一点? 我维护了一个计数变量,它在 reduce 方法中递增。但这不起作用,它会在输出中提供所有记录。我认为这是因为 reducer 的每个输入行都会调用 reduce 类,因此每次将 count 初始化为 0。有没有办法维护全局变量?
公共类 Reduce2 扩展 Reducer{
int count=0;
@Override
protected void reduce(IntWritable1 key, Iterable<Text> values,Context context) throws IOException, InterruptedException {
int count=0;
String key1 = "";
for(Text value:values) {
key1+=value;
}
if(count<5) {
count++;
context.write(new Text(key1), key);
}
}
}
【问题讨论】:
标签: mapreduce hadoop2 reducers