开发者社区> 问答> 正文

初赛提交试跑Kryo RuntimeException

提交了提前试跑,发现结果都是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?好奇怪啊

展开
收起
黑暗法师 2016-06-29 18:40:11 8342 0
6 条回答
写回答
取消 提交回答
  • 回 10楼sxian的帖子
    怎么解决的?那个参数没有无参构造函数???????
    2016-07-09 11:11:42
    赞同 展开评论 打赏
  • 回 7楼玄弟的帖子
    你好,我也存在这个问题,用本地模式跑的时候没有问题,一提交到集群就会报错,无参构造函数也添加了。我定义的数据结构如图:

    只有在Spout里面把List<MessageExt>用这个自定义tuple封装了一下。堆栈和楼主基本一样,请问是什么问题?万分感激!

    -------------------------

    回 9楼玄弟的帖子
    谢谢~刚发现是MessageExt里面的一个成员变量没有无参构造函数,之前没追看到这一层,谢谢啦!
    2016-07-06 23:07:39
    赞同 展开评论 打赏
  • 回 4楼黑暗法师的帖子
    我也遇到了这种情况,请问您最后是怎么解决的呢
    2016-07-06 13:51:02
    赞同 展开评论 打赏
  • Re初赛提交试跑Kryo RuntimeException
    也是这种情况
    2016-06-30 10:34:05
    赞同 展开评论 打赏
  • 回 1楼玄弟的帖子
    SPout    Bolt之类的也是需要无参数构造函数的吗?

    -------------------------

    Re初赛提交试跑Kryo RuntimeException
    我知道为什么会这样了!!!!!
    2016-06-29 20:04:32
    赞同 展开评论 打赏
  • 不是有错误提示吗
    missing no-arg constructor
      你的数据结构缺少无参数构造函数

    -------------------------

    不需要,只有你传递的消息中含有的数据结构,需要无参数构造函数

    -------------------------

    你传输的消息自定义的那些class 缺少无参数构造函数,加个无参数构造函数就可以了

    -------------------------

    具体我没看,看错误提示 MessageExt 没有无参数构造函数。如果是这个原因的话,我建议你不好把MessageExt 作为你这个class的一个字段。从RocketMQ消费出数据之后,对MessageExt的数据读出来存到你的这个class对应的对象里头去。

    2016-06-29 20:01:07
    赞同 展开评论 打赏
滑动查看更多
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载