在我的mapreduce 工作中,我只想输出一些行。
但如果我这样编码:
上下文.write(数据,空);
程序将抛出java.lang.NullPointerException。
我不想像下面这样编写代码:
context.write(数据, new Text(""));
因为我必须修剪输出文件中每一行的空格。
有什么好的方法可以解决吗?
提前致谢。
抱歉,这是我的错误。我仔细检查了程序,发现原因是我将Reducer设置为combiner。
如果我不使用组合器,则语句
上下文.write(数据,空);
在减速器中工作正常。在输出数据文件中,只有数据行。
分享hadoop权威指南中对NullWritable的解释:
NullWritable 是一种特殊类型的 Writable,因为它具有零长度序列化。无字节
写入流或从流中读取。它用作占位符;例如,在
MapReduce,当不需要时,可以将键或值声明为 NullWritable
使用该位置 - 它有效地存储一个恒定的空值。 NullWritable也可以
当您想要存储值列表时,可用作 SequenceFile 中的键,而不是
到键值对。它是一个不可变的单例:可以通过调用来检索实例
NullWritable.get()。
你应该使用空可写 http://hadoop.apache.org/docs/current/api/org/apache/hadoop/io/NullWritable.html以此目的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)