Apache storm Storm 0.9.1和Titan graph数据库0.4.2中的Kryo兼容性,使用apache cassandra 2.0.7作为存储后端

Apache storm Storm 0.9.1和Titan graph数据库0.4.2中的Kryo兼容性,使用apache cassandra 2.0.7作为存储后端,apache-storm,titan,kryo,Apache Storm,Titan,Kryo,我们使用的是使用Kryo 2.17的Storm 0.9.1,我们有一个模块,该模块将数据插入titan graph数据库,该数据库内部使用Kryo 2.21,导致以下问题: java.lang.RuntimeException:com.esotericsoftware.kryo.KryoException:java.lang.IllegalArgumentException:无法将com.thinkaurelius.titan.graphdb.types.TypeAttributeType字段c

我们使用的是使用Kryo 2.17的Storm 0.9.1,我们有一个模块,该模块将数据插入titan graph数据库,该数据库内部使用Kryo 2.21,导致以下问题:

java.lang.RuntimeException:com.esotericsoftware.kryo.KryoException:java.lang.IllegalArgumentException:无法将com.thinkaurelius.titan.graphdb.types.TypeAttributeType字段com.thinkaurelius.titan.graphdb.types.TypeAttribute.type设置为com.thinkaurelius.titan.graphdb.TypeAttribute 序列化跟踪: 类型(com.thinkaurelius.titan.graphdb.types.TypeAttribute)


我们如何解决这个问题,因为在storm中将Kryo升级到2.21不会导致这样的方法错误。我们还尝试在titan graph数据库中将Kryo降级至2.17,但我们面临与上述相同的问题。

风暴0.9.1和更早的版本取决于碳酸盐1.3.2,后者取决于Kryo 2.17。泰坦依赖于kryo 2.21,这与kryo 2.17不兼容

java类加载器无法区分kryo的两个版本,导致您看到RuntimeException

Storm最近升级到使用kryo 2.21的较新版本的Carbonite。请参阅此票据:

风暴0.9.2-孵化尚未发布,但它确实解决了这个问题。我们一起成功地运行了Storm和Titan。因此,您可以运行自己构建的storm 0.9.2-Cubating,也可以等到0.9.2-Cubating正式发布


风暴0.9.2中也讨论了这个问题,孵化取决于kryo 2.21,并已正式发布。看见