我们正在使用使用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)
我们如何解决此问题,因为在风暴中将Kryo升级到2.21导致没有此类方法错误。我们还尝试在Titan图数据库中将Kryo降级为2.17,但我们面临与上述相同的问题。
答案 0 :(得分:6)
Storm 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
风暴0.9.2孵化尚未发布,但确实解决了这个问题。我们一起成功运行了Storm和Titan。因此,您可以运行自己的0.9.2孵化风暴或等到0.9.2孵化正式发布。 中讨论过