Scala 在Storm配置中注册序列化程序

Scala 在Storm配置中注册序列化程序,scala,apache-storm,Scala,Apache Storm,我想在storm拓扑中注册Scala集合的序列化程序。为此,我正在使用twitter chill KryoSerializer 我正在做的是 1.创建了一个实现IKryoDecorator的装饰器。在装饰方法中,我调用KryoSerializer.registerAll(k),其中k是一个Kyro实例 2.在拓扑配置对象中,我调用registerDecorator方法 import com.twitter.chill.KryoSerializer import com.esotericsoftw

我想在storm拓扑中注册Scala集合的序列化程序。为此,我正在使用twitter chill KryoSerializer

我正在做的是
1.创建了一个实现IKryoDecorator的装饰器。在装饰方法中,我调用KryoSerializer.registerAll(k),其中k是一个Kyro实例
2.在拓扑配置对象中,我调用registerDecorator方法

import com.twitter.chill.KryoSerializer
import com.esotericsoftware.kryo.Kryo
import backtype.storm.serialization.IKryoDecorator

class KryoDecorator extends IKryoDecorator {
  def decorate(k: Kryo) {
    KryoSerializer.registerAll(k)
  }
}
然后

stormConfig.registerDecorator(classOf[ReflexKryoDecorator])
当我运行拓扑时,仍然会出现异常,声明“类未注册:scala.collection.immutable.Map$Map3”

风暴版本0.8.2
Chill版本0.2.3

您使用的是什么版本,您不清楚

这是一个错误,因为scala特例是小地图,因为Storm默认要求注册,最后是因为不知何故,默认地图序列化程序没有被提取:

我补充了一个问题:

要解决此问题,请将注册设置为可选,就像我们在此处所做的那样:

看起来Ryan Lecompte提交了一个成功的补丁,所以我们解决了这个问题:我得到了
java.lang.IllegalArgumentException:Class未注册:scala.collection.mutable.ListBuffer
,但是我可以通过将注册设置为false来绕过这个错误<代码>Kryo.setRegistrationRequired(false)