首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Kryo注册Receiver[]?

如何在Kryo注册Receiver[]?
EN

Stack Overflow用户
提问于 2017-03-09 06:57:50
回答 1查看 645关注 0票数 1

在将Spark 1.6应用程序移植到Spark 2.0.2的过程中,日志中有这样的抱怨:

代码语言:javascript
复制
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,此操作失败

代码语言:javascript
复制
sparkConf.set("spark.kryo.classesToRegister", "org.apache.spark.streaming.receiver.Receiver[].class")

对于Caused by: java.lang.ClassNotFoundException: org/apache/spark/streaming/receiver/Receiver[],此操作失败

代码语言:javascript
复制
sparkConf.set("spark.kryo.classesToRegister", "org.apache.spark.streaming.receiver.Receiver[]")

对于Class is not registered: org.apache.spark.streaming.receiver.Receiver[],此操作失败

代码语言:javascript
复制
sparkConf.set("spark.kryo.classesToRegister", "org.apache.spark.streaming.receiver.Receiver")

对于Class is not registered: org.apache.spark.streaming.receiver.Receiver[],此操作失败

代码语言:javascript
复制
sparkConf.registerKryoClasses(Array(
    classOf[org.apache.spark.streaming.receiver.Receiver[_]]
))

如何注册这个类?我可以向Kryo注册其他类,但不是这个类。

编辑:

在所有这些情况下,此设置都已完成:

代码语言:javascript
复制
sparkConf.set("spark.kryo.registrationRequired", "true")
sparkConf.set("spark.serializer", classOf[KryoSerializer].getName)
GraphXUtils.registerKryoClasses(sparkConf)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-10 04:50:58

我找到了一种在这里有效的方法:Kryo serialization refuses to register class

简而言之,将classOf[org.apache.spark.streaming.receiver.Receiver[_]],更改为classOf[Array[org.apache.spark.streaming.receiver.Receiver[_]]],

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42683553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档