在 Spark 作业服务器上调用程序的 Scala 运行时错误

Posted

技术标签:

【中文标题】在 Spark 作业服务器上调用程序的 Scala 运行时错误【英文标题】:Scala Runtime errors calling program on Spark Job Server 【发布时间】:2017-02-11 08:28:07 【问题描述】:

我使用 spark 1.6.2 和 Scala 11.8 来编译我的项目。生成的带有依赖项的 uber jar 放在 Spark Job Server 中(似乎使用 Scala 10.4(.sh 文件中指定的 SCALA_VERSION=2.10.4)

启动服务器,上传context/app jars没有问题。但是在运行时,会出现以下错误

java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror(Ljava/lang/ClassLoader;)Lscala/reflect/api/JavaUniverse$JavaMirror

Why do Scala 2.11 and Spark with scallop lead to "java.lang.NoSuchMethodError: scala.reflect.api.JavaUniverse.runtimeMirror"? 谈论使用 Scala 10 编译源代码。是真的吗?

有什么建议请...

【问题讨论】:

“这是真的吗?”是的。 【参考方案1】:

使用 scala 2.10.4 编译您的项目。否则你也需要用11编译spark。

【讨论】:

确实有效。谢谢。你能解释一下为什么吗?大多数人似乎都同意使用 11.* 你也必须使用 scala 11 编译 spark 好的。我运行一个 maven 项目来下载 spark 依赖项和 eclipse 来编译我的项目以及 maven 依赖项。此时,SJS jar 也被添加到 maven repo 中。现在,将 scala 编译器版本从 10 更改为 11 就足够了吗?这正是我正在做的。我错过了什么吗? 不,我指的是 spark 二进制文件。在您的部署环境中会有 spark 二进制文件。这些应该用 scala 11 编译。

以上是关于在 Spark 作业服务器上调用程序的 Scala 运行时错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用scala开发spark作业,并访问hive

java.lang.NoSuchMethodError: Scala.Predef$.refArrayOps 在 Spark 作业中使用 Scala

远程调用Spark平台中的程序

教你如何在Spark Scala/Java应用中调用Python脚本

Spark 作业中的 Scala 成员字段可见性

教你如何在Spark Scala/Java应用中调用Python脚本