【发布时间】:2014-01-11 10:57:15
【问题描述】:
我正在用 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);
}
这个减少很重要。然后它应该写 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);
}
【问题讨论】: