在移植时,Spark 1.6应用星火2.0.2的过程中,有这样的抱怨在日志中:如何使用Kryo注册Receiver []?
com.esotericsoftware.kryo.KryoException: java.lang.IllegalArgumentException: Class is not registered: org.apache.spark.streaming.receiver.Receiver[]
Note: To register this class use: kryo.register(org.apache.spark.streaming.receiver.Receiver[].class);
这种失败Caused by: java.lang.ClassNotFoundException: org/apache/spark/streaming/receiver/Receiver[]/class
:
sparkConf.set("spark.kryo.classesToRegister", "org.apache.spark.streaming.receiver.Receiver[].class")
这种失败Caused by: java.lang.ClassNotFoundException: org/apache/spark/streaming/receiver/Receiver[]
:
sparkConf.set("spark.kryo.classesToRegister", "org.apache.spark.streaming.receiver.Receiver[]")
该失败Class is not registered: org.apache.spark.streaming.receiver.Receiver[]
:
sparkConf.set("spark.kryo.classesToRegister", "org.apache.spark.streaming.receiver.Receiver")
这种失败Class is not registered: org.apache.spark.streaming.receiver.Receiver[]
:
sparkConf.registerKryoClasses(Array(
classOf[org.apache.spark.streaming.receiver.Receiver[_]]
))
我怎样才能得到这个类注册?我已经能够注册其他类与Kryo,但不是这一个。
编辑:
在所有这些情况下,这个设置已经完成:
sparkConf.set("spark.kryo.registrationRequired", "true")
sparkConf.set("spark.serializer", classOf[KryoSerializer].getName)
GraphXUtils.registerKryoClasses(sparkConf)
你有没有也许在你的配置中将'spark.kryo.registrationRequired'设置为'true'? –
@yuvalitzchakov - 我试过它设置为true和false。设置为false,我得到关于对象13994的错误,但没有对象名称。 –
我会建议将其设置为“false”并发布错误消息。 –