我正在使用 Hadoop 编写 mapreduce 。 在reduce方法中,我想使用 context.write()。但输出是int类型。 我怎样才能做到这一点?当我使用 context.write()时,它显示错误:
第二个参数不能是int。
这是我的代码:
public void reduce(Text key, Iterable<NullWritable> values, Context context) throws IOException, InterruptedException {
int count = 0;
for (NullWritable nullWritable : values) {
count++;
}
//context.write(key, count);
}
这种减少是有意义的。然后它应该写密钥和计数变量。
我该怎么做?
答案
我找到了答案。我应该 new 一个 IntWritable 类并使用它的方法( set(intValue))。
如下面的代码:
IntWritable c = new IntWritable();
public void reduce(Text key, Iterable<NullWritable> values, Context context) throws IOException, InterruptedException {
int count = 0;
for (NullWritable nullWritable : values) {
count++;
}
c.set(count);
context.write(key, c);
}
答案 0 :(得分:0)
你也可以这样使用它:
context.write(key,new IntWritable(count));