hadoop2.2 (测试环境,不过个人感觉1.X和2.X的自定义类型应该是一致的,没做过对比)
自定义类部分代码如下所示:
@Override public void write(DataOutput out) throws IOException { log.info("in write()*************************\nvalue:"+this.value+"\ndir:"+this.parentDirName); value.write(out); parentDirName.write(out); } @Override public void readFields(DataInput in) throws IOException { log.info("in read()*******************\nvalue:"+this.value+"\ndir:"+this.parentDirName); value.readFields(in); parentDirName.readFields(in); }在使用这个自定义类作为value的时候出现下面的错误:
这里可以看到,在write方法里面是有值的,但是在read方法的时候出现的值是null。几经排查,发现是定义的时候有个地方没有注意。
在构造方法中,我第一次使用的是下面的代码,第二次是把其中的注释地方去掉了,然后就没有出现NullPointerException了。
public JoinValueWritable(){ // this(new Text(),new Text()); } public JoinValueWritable(Text value ,Text parentDirName){ this.value=value; this.parentDirName=parentDirName; }
分享,成长,快乐
转载请注明blog地址:http://blog.csdn.net/fansy1990
hadoop 自定义writable NullPointerException,布布扣,bubuko.com
hadoop 自定义writable NullPointerException
原文:http://blog.csdn.net/fansy1990/article/details/20944283