2016-06-08 2 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); 

Если вы внимательно смотрите, десериализованный метод переписывается, байт параметра [] изменяется на ByteBuffer. так, штормовые швы NoSuchMethodError. вы должны переупаковать свою программу с помощью шторма external storm-kafka-1.0.1.jar :)