我们使用的是storm 0.9.1,它使用的是kryo 2.17。我们有一个模块,它将数据插入到titan graph数据库中,该数据库内部使用kryo 2.21,这导致了以下问题:
java.lang.runtimeexception:com.esotericsoftware.kryo.kryoexception:java.lang.illegalargumentexception:无法将com.thinkaurelius.titan.graphdb.typeattributetype字段com.thinkaurelius.titan.graphdb.typeattribute.type设置为com.thinkaurelius.titan.graphdb.typeattribute序列化跟踪:type(com.thinkaurelius.titan.graphdb.types.typeattribute)
如何解决这个问题,因为在storm中将kryo升级到2.21不会导致这样的方法错误。我们也尝试在titan graph数据库中将kryo降级到2.17,但是我们面临与上面相同的问题。
1条答案
按热度按时间cgvd09ve1#
0.9.1及更早的风暴取决于碳酸盐岩1.3.2,后者取决于kryo 2.17。泰坦依赖于kryo2.21,这与kryo2.17不兼容
java类加载器无法区分kryo的两个版本,导致您看到runtimeexception。
storm最近升级到了使用kryo 2.21的较新版本的carbonite。请看以下图片:https://issues.apache.org/jira/browse/storm-263
Storm0.9.2-Cubating尚未发布,但它确实解决了这个问题。我们一起成功地运行了风暴和泰坦。因此,您可以运行自己构建的Storm0.9.2-Cubeating,也可以等到0.9.2-Cubeating正式发布。
aurelius google小组也讨论了这个问题