Storm问题——组件带参数构造函数未被调用,抛出NullpointerException

问题描述

不知道大家有没有遇到过这个问题,我实现了BaseRichBolt,重载一个带参数的构造函数,new这个组件时传入一个参数作为该组件的成员变量,然后在declareOutputFields方法中调用该变量,local模式运行正常,分布式模式运行就抛NPE。后来过了半小时,再提交,又OK了。(PS:其间检查了很多遍代码,没有传入NULL变量)


我在开发trident程序时,继承mapState时也出现了这个问题


可能原因

1、跟storm本身的序列化机制有关系,storm本身对组件进行序列化和反序列化时,提供一个默认的无参构造函数,至于为什么会提供这个,请看可能原因2
2、猜想在分布式环境,storm要根据集群topology的工作来维护各个topology之间的状态以及一些细节state之类的,突然有些时候state变化,就导致了上面的问题


这两个可能原因目前还是自己的YY,没有找到具体原因,后续继续研究源码,找到再补上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值