我们使用的是Storm 0.9.1,而后者使用的是Kryo 2.17,我们有一个模块,可将数据插入到titan图形数据库中,而该数据库内部使用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.types.TypeAttribute
序列化跟踪:
类型(com.thinkaurelius.titan.graphdb.types.TypeAttribute)

我们如何解决此问题,因为在风暴中将Kryo升级到2.21不会导致这种方法错误。我们还尝试在泰坦图形数据库中将Kryo降级到2.17,但是我们面临与上述相同的问题。

最佳答案

风暴0.9.1和更早版本取决于Carbonite 1.3.2,后者取决于Kryo 2.17。 Titan依赖于Kryo 2.21,它与Kryo 2.17不兼容

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

Storm最近已升级到使用kryo 2.21的Carbonite的较新版本,请参见此票证:
https://issues.apache.org/jira/browse/STORM-263

Storm 0.9.2孵化尚未发布,但确实可以解决此问题。我们一起运行Storm和Titan取得了成功。因此,您可以运行自己的Storm 0.9.2孵化版本,也可以等待0.9.2孵化正式发布。

Aurelius google group中也讨论了此问题

关于apache-storm - Storm 0.9.1和Titan图形数据库0.4.2与Apache cassandra 2.0.7作为存储后端的Kryo兼容性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24244689/

10-12 19:05