手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Hadoop 自定义writable NullPointerException

[日期:2014-03-11] 来源:Linux社区  作者:fansy1990 [字体: ]

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方法也行。

相关阅读

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

linux
相关资讯       Hadoop教程  Hadoop Writable 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款