2

我们使用的是使用 Kryo 2.17 的 Storm 0.9.1,我们有将数据插入到内部使用 Kryo 2.21 的 Titan 图形数据库的模块,这会导致以下问题:

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 序列化跟踪:type (com.thinkaurelius.titan.graphdb.types.TypeAttribute)

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

4

1 回答 1

6

Storm 0.9.1 及更早版本依赖于 Carbonite 1.3.2,后者依赖于 kryo 2.17。Titan 依赖于与 kryo 2.17 不兼容的 kryo 2.21

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

Storm 最近升级到使用 kryo 2.21 的新版本 Carbonite 看到这张票: https ://issues.apache.org/jira/browse/STORM-263

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

Aurelius google group也讨论了这个问题

于 2014-06-16T15:11:00.347 回答