首页 > 其他 > 详细

hadoop 自定义writable NullPointerException

时间:2014-03-10 22:47:34      阅读:481      评论:0      收藏:0      [点我收藏+]

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的时候出现下面的错误:


bubuko.com,布布扣

这里可以看到,在write方法里面是有值的,但是在read方法的时候出现的值是null。几经排查,发现是定义的时候有个地方没有注意。

在构造方法中,我第一次使用的是下面的代码,第二次是把其中的注释地方去掉了,然后就没有出现NullPointerException了。

public JoinValueWritable(){
	//	this(new Text(),new Text());
	}
	public JoinValueWritable(Text value ,Text parentDirName){
		this.value=value;
		this.parentDirName=parentDirName;
		
	}

这里自定义类应该是要调用一个默认的无参的构造方法,如果里面什么都没有,那么就会出现错误。所以里面就需要加上一个有参数构造方法或者写上set方法也行。


分享,成长,快乐

转载请注明blog地址:http://blog.csdn.net/fansy1990



hadoop 自定义writable NullPointerException,布布扣,bubuko.com

hadoop 自定义writable NullPointerException

原文:http://blog.csdn.net/fansy1990/article/details/20944283

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!