阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Hadoop 自定义writable NullPointerException

137次阅读
没有评论

共计 1379 个字符,预计需要花费 4 分钟才能阅读完成。

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

Hadoop 自定义 writable NullPointerException

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

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

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

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

相关阅读

Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm

Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm

单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm

搭建 Hadoop 环境(在 Winodws 环境下用虚拟机虚拟两个 Ubuntu 系统进行搭建)http://www.linuxidc.com/Linux/2011-12/48894.htm

更多 Hadoop 相关信息见 Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计1379字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中