Hadoop 如何在context.write(k,v)中输出值

Hadoop 如何在context.write(k,v)中输出值,hadoop,mapreduce,output,Hadoop,Mapreduce,Output,在我的mapreduce工作中,我只想输出一些行 但如果我这样编码: write(数据,空) 程序将抛出java.lang.NullPointerException 我不想编写如下代码: context.write(数据,新文本(“”) 因为我必须修整输出文件中每一行的空白。< /P> 有什么好办法解决这个问题吗? 提前谢谢 对不起,这是我的错。我仔细检查了程序,发现原因是我将减速器设置为合路器 如果我不使用合并器,语句 write(数据,空); 实际上,减速器工作正常。在输出数据文件中,只有

在我的mapreduce工作中,我只想输出一些行

但如果我这样编码: write(数据,空)

程序将抛出java.lang.NullPointerException

我不想编写如下代码: context.write(数据,新文本(“”)

因为我必须修整输出文件中每一行的空白。< /P> 有什么好办法解决这个问题吗? 提前谢谢


对不起,这是我的错。我仔细检查了程序,发现原因是我将减速器设置为合路器

如果我不使用合并器,语句 write(数据,空); 实际上,减速器工作正常。在输出数据文件中,只有数据行


共享hadoop权威指南中的可空写解释:

NullWritable是一种特殊的可写类型,因为它具有零长度序列化。没有字节 写入流或从流中读取。它用作占位符;例如,在 MapReduce,一个键或值可以在不需要时声明为NullWritable 为了使用该位置,它有效地存储了一个常量空值。空可写也可以 当您想要存储值列表时,作为SequenceFile中的键非常有用,而不是 要创建键值对。它是一个不可变的单例:可以通过调用
NullWritable.get()。

您应该为此使用。

如果使用新文本(“”),则不需要修剪。如果仅使用新文本(“”),则必须进行修剪。此外,API还有一个Text()默认构造函数。谢谢,我试一试。谢谢。我已经检查了NullWritable类,它适合我。