Apache storm java.lang.NoSuchMethodError:org.apache.storm.spout.MultiScheme.deserialize([B)Ljava/lang/Iterable;

Apache storm java.lang.NoSuchMethodError:org.apache.storm.spout.MultiScheme.deserialize([B)Ljava/lang/Iterable;,apache-storm,Apache Storm,我现在正在尝试对storm 1.0.1进行一些测试。我使用了使用storm 0.9.5编译的拓扑,并使用向后兼容模式client.jartransformer.class:“org.apache.storm.hack.StormShadeTransformer”,但我在报告中遇到了以下异常: > java.lang.NoSuchMethodError: > org.apache.storm.spout.MultiScheme.deserialize([B)Ljava/lang/Ite

我现在正在尝试对storm 1.0.1进行一些测试。我使用了使用storm 0.9.5编译的拓扑,并使用向后兼容模式
client.jartransformer.class:“org.apache.storm.hack.StormShadeTransformer”
,但我在报告中遇到了以下异常:

> java.lang.NoSuchMethodError:
> org.apache.storm.spout.MultiScheme.deserialize([B)Ljava/lang/Iterable;
>         at storm.kafka.KafkaUtils.generateTuples(KafkaUtils.java:209) ~[stormjar.jar:?]
>         at storm.kafka.PartitionManager.next(PartitionManager.java:131)
> ~[stormjar.jar:?]
>         at storm.kafka.KafkaSpout.nextTuple(KafkaSpout.java:141) ~[stormjar.jar:?]
>         at org.apache.storm.daemon.executor$fn__7885$fn__7900$fn__7931.invoke(executor.clj:645)
> ~[storm-core-1.0.1.jar:1.0.1]
>         at org.apache.storm.util$async_loop$fn__625.invoke(util.clj:484)
> [storm-core-1.0.1.jar:1.0.1]
>         at clojure.lang.AFn.run(AFn.java:22) [clojure-1.7.0.jar:?]
>         at java.lang.Thread.run(Thread.java:745) [?:1.7.0_71]
你知道怎么解决这个问题吗


谢谢!

在0.9.5 storm core中,MultiScheme.class的方法是

public Iterable<List<Object>> deserialize(byte[] ser);
public Iterable<List<Object>> deserialize(ByteBuffer ser);
public Iterable反序列化(byte[]ser);
但在1.0.1 storm core中,MultiScheme.class的方法是

public Iterable<List<Object>> deserialize(byte[] ser);
public Iterable<List<Object>> deserialize(ByteBuffer ser);
public Iterable反序列化(ByteBuffer-ser);
若你们仔细看,反序列化方法是重写,参数byte[]变为ByteBuffer。 所以,storm不会抛出这样的错误。 您应该使用storm external storm-kafka-1.0.1.jar重新打包程序
:)

在0.9.5风暴核心中,MultiScheme.class的方法是

public Iterable<List<Object>> deserialize(byte[] ser);
public Iterable<List<Object>> deserialize(ByteBuffer ser);
public Iterable反序列化(byte[]ser);
但在1.0.1 storm core中,MultiScheme.class的方法是

public Iterable<List<Object>> deserialize(byte[] ser);
public Iterable<List<Object>> deserialize(ByteBuffer ser);
public Iterable反序列化(ByteBuffer-ser);
若你们仔细看,反序列化方法是重写,参数byte[]变为ByteBuffer。 所以,storm不会抛出这样的错误。 您应该使用storm external storm-kafka-1.0.1.jar重新打包程序
:)

最好的方法是使用Storm 1.0重写和重新编译--不确定为什么兼容模式不起作用。可能是一个bug?您可能想写入user@storm.apache.orgBest方法是使用Storm 1.0重写和重新编译——不确定为什么兼容模式不起作用。可能是一个bug?您可能想写入user@storm.apache.orgdoe这意味着Storm 1.0.x不向后兼容吗?这是否意味着Storm 1.0.x不向后兼容?