前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Hadoop 自定义writable NullPointerException

Hadoop 自定义writable NullPointerException

作者头像
星哥玩云
发布2022-06-30 19:14:33
发布2022-06-30 19:14:33
2690
举报
文章被收录于专栏:开源部署开源部署

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;  }

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档