Kryo反序列化器在spark中抛出ClassNotFoundException:无法找到类

时间:2015-05-14 05:02:17

标签: java scala apache-spark kryo

我正在使用spark 1.3.0运行scala中的spark工作。我的RDD转换函数使用来自第三方库的不可序列化的类。为了使闭包序列化成为可能,我将这些对象包装在com.twitter.chill.MeatLocker中,它本身就是java.io.Serializable,但是使用Kryo作为包装对象。然后我用装配制作一个超级罐。

当我运行我的工作时,执行程序任务无法为我在MeatLocker中包装的相同类抛出ClassNotFoundException。我知道spark 1.2.x中存在一个相关的错误,但谷歌搜索这个主题表明我已经修复了1.3.0。 https://issues.apache.org/jira/browse/SPARK-6069

我已尝试过spark配置属性spark.executor.userClassPathFirst = true但无效。我将此属性传递给spark-submit脚本,如下所示: spark-submit --class <My-Class> <My-Jar> --conf spark.executor.userClassPathFirst=true

除此之外,我没有选择,只能获得第三方库的源代码,并在使这些类实现java.io.Serializable后将其包含在我的项目中。这样我就完全消除了对Kryo序列化的需求,从而没有遇到这个问题,但我希望有更好的方法。

0 个答案:

没有答案