Storm错误集

来源:互联网 发布:北京装修多少钱 知乎 编辑:程序博客网 时间:2024/05/21 01:54

http://blog.sina.com.cn/s/blog_62bb28cc0101j4h6.html

 

 

1、出现不能序列化的错误:

java.io.NotSerializableExceptionbacktype.storm.spout.Schematism

    Storm使用的kyro进行序列化,如果出现不能序列化的错误:

 

   (1) 文件确实没有实现序列化接口

   (2) 如果序列化报错的文件是在bolt里面调用的。序列化文件声明应该放在prepare里面,不能再excute里面

         声明。

   (3) 先查看kyro的版本是不是正确的。

   (4) 如果正确,在查看一下你需要stormjar包里面的default.yaml文件配置的默认序列化有关的文件是否在

         你当前使用的stormjar包存在。如果不存在,是storm版本的问题,升级storm的版本。


2、出现slf4j文件报错

    具体参照:http://www.slf4j.org/codes.html


3、出现类型转换错误的时候

(1)检查你传输给bolttuple数据里面的类型是什么。

             是否跟获取的时候的类型使用的tuple.getString()方法,get后面所加的类 型一致

 

(2)在获取map的时候的类型转换错误,一般都是时间转换的时候longint的类型之间不能强制转换,

    使用map所需要的类型,然后使用该类型的方法进行转换。

 

 

4、连接被拒绝:

java.lang.RuntimeException: 

org.apache.thrift7.transport.TTransportException: 

java.net.ConnectException: Connection refused


 

      (1)检查zookeeper,nimbus,surpervisor是否开启了

      (2)原因是storm客户端连不上Nimbus ,查看一下你配置的storm.yaml文件是否正确。

      (3)如果storm.yaml文件正确。查看端口号是否被占用

 

 

5、中文乱码问题。

1、查看乱码是否可以转换

2、查看数据源头是否是乱码

3、查看写数据,存数据,取数据的编码是否是一致的

 

 

 

6、找不到class

notfindClass错误:

(1) 查看文件名是否写错了

(2) 查看是否编译过了

(3) 查看编译过的文件中是否有你正在运行的 “.class”文件

 

7、在本地运行没有空指针异常,发送到集群出现空指针错误

1bolt的对象声明需要在prepare里面做,不能再构造函数里面进行

(2)spout的对象声明必须放在open里面处理,构造函数不能做对象声明。

(3)声明序列化的文件会“NotSerializableException

 

 

0 0