2017-03-08 22 views
1

在移植时,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) 
+0

你有没有也许在你的配置中将'spark.kryo.registrationRequired'设置为'true'? –

+0

@yuvalitzchakov - 我试过它设置为true和false。设置为false,我得到关于对象13994的错误,但没有对象名称。 –

+1

我会建议将其设置为“false”并发布错误消息。 –

回答

3

研究发现,在这里工作的方法:Kryo serialization refuses to register class

总之,改变classOf[org.apache.spark.streaming.receiver.Receiver[_]],classOf[Array[org.apache.spark.streaming.receiver.Receiver[_]]],

相关问题