提交了提前试跑,发现结果都是Your topology may be ok ,but the accuracy is zero。下载日志来看发现序列化和反序列化的时候Kryo直接崩溃了
java.lang.RuntimeException: com.esotericsoftware.kryo.KryoException: Class cannot be created (missing no-arg constructor): java.net.InetSocketAddress
Serialization trace:
bornHost (com.alibaba.rocketmq.common.message.MessageExt)
at backtype.storm.serialization.KryoTupleDeserializer.deserialize(KryoTupleDeserializer.java:103) ~[jstorm-core-2.1.1.jar:na]
at backtype.storm.serialization.KryoTupleDeserializer.deserialize(KryoTupleDeserializer.java:60) ~[jstorm-core-2.1.1.jar:na]
at com.alibaba.jstorm.task.TaskReceiver$DeserializeRunnable.deserialize(TaskReceiver.java:141) [jstorm-core-2.1.1.jar:na]
at com.alibaba.jstorm.task.TaskReceiver$DeserializeRunnable.onEvent(TaskReceiver.java:163) [jstorm-core-2.1.1.jar:na]
at backtype.storm.utils.DisruptorQueueImpl.consumeBatchToCursor(DisruptorQueueImpl.java:193) [jstorm-core-2.1.1.jar:na]
at backtype.storm.utils.DisruptorQueueImpl.consumeBatchWhenAvailable(DisruptorQueueImpl.java:161) [jstorm-core-2.1.1.jar:na]
at com.alibaba.jstorm.task.TaskReceiver$DeserializeRunnable.run(TaskReceiver.java:187) [jstorm-core-2.1.1.jar:na]
at com.alibaba.jstorm.callback.AsyncLoopRunnable.run(AsyncLoopRunnable.java:95) [jstorm-core-2.1.1.jar:na]
at java.lang.Thread.run(Thread.java:756) [na:1.8.0_66]
Caused by: com.esotericsoftware.kryo.KryoException: Class cannot be created (missing no-arg constructor): java.net.InetSocketAddress
好像是Kryo的包没有引入进去,这个不是允许用的么?为什么会找不到这个class?好奇怪啊
-------------------------
-------------------------
-------------------------
不需要,只有你传递的消息中含有的数据结构,需要无参数构造函数
-------------------------
你传输的消息自定义的那些class 缺少无参数构造函数,加个无参数构造函数就可以了
-------------------------
具体我没看,看错误提示 MessageExt 没有无参数构造函数。如果是这个原因的话,我建议你不好把MessageExt 作为你这个class的一个字段。从RocketMQ消费出数据之后,对MessageExt的数据读出来存到你的这个class对应的对象里头去。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。