2016-06-08 56 views
0

我正在嘗試做一些關於風暴1.0.1的測試。而且我用風暴0.9.5編譯拓撲和後向兼容模式client.jartransformer.class: "org.apache.storm.hack.StormShadeTransformer"提交,但我在我的嘴以下異常:java.lang.NoSuchMethodError:org.apache.storm.spout.MultiScheme.deserialize([B] Ljava/lang/Iterable;

> 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] 

任何想法如何解決這一問題?

謝謝!

+1

最好的方式是使用Storm 1.0重寫和重新編譯 - 不知道爲什麼兼容模式不起作用。也許是一個錯誤?你可能想寫給[email protected] –

回答

2

在0.9.5風暴核,MultiScheme.class的方法是

public Iterable<List<Object>> deserialize(byte[] ser); 

但在1.0.1風暴核,MultiScheme.class的方法是

public Iterable<List<Object>> deserialize(ByteBuffer ser); 

如果你仔細看看,反序列化方法是重寫的,參數byte []改成ByteBuffer。 那麼,風暴會拋出NoSuchMethodError。 你應該用暴風雨外部風暴重新包裝你的程序-kafka-1.0.1.jar :)

相關問題