0
我有一个类:Hadoop的序列化嵌套对象
class Class1 implements Writable{
int intField;
double doubleField;
Class2 refToClass2;
public void readField(DataInput in){...}
public void write(DataOutput out){...}
class Class2 implements Serializable, Writable{
....
}
的Hadoop抛出这个错误的减速装置,使用的Class1作为一个输出值时:
java.lang.NullPointerException
at org.apache.hadoop.io.serializer.SerializationFactory.getSerializer(SerializationFactory.java:73)
at org.apache.hadoop.io.SequenceFile$Writer.init(SequenceFile.java:961)
at org.apache.hadoop.io.SequenceFile$Writer.<init>(SequenceFile.java:892)
at org.apache.hadoop.io.SequenceFile.createWriter(SequenceFile.java:393)
at org.apache.hadoop.io.SequenceFile.createWriter(SequenceFile.java:354)
at org.apache.hadoop.io.SequenceFile.createWriter(SequenceFile.java:476)
at org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat.getRecordWriter(SequenceFileOutputFormat.java:61)
at org.apache.hadoop.mapred.ReduceTask$NewTrackingRecordWriter.<init>(ReduceTask.java:569)
我的直觉告诉我,这个问题与Class1或更可能实现Serializable和Writable的Class2相关。
任何想法?
UPDATE:
我本地化的问题:问题是其中的Class1,现在,我已经改变了只实现了可写(没有也可序列化)。我也改变了它,因为它不再包含对Class2的引用。我仍然得到同样的错误。如果我将Class1替换为另一个Writable实现作为输出值,则它可以工作! 为什么?
你可以分享io.serializations'的'值的组态? –
我想我已经达成了解决方案,我只需要检查它。我犯了一个愚蠢的错误。 – Razvan