如何在hadoop reducer中写入int值

时间:2014-01-11 10:57:16

标签: hadoop mapreduce

我正在使用 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);

            }

1 个答案:

答案 0 :(得分:0)

你也可以这样使用它:

context.write(key,new IntWritable(count));