【问题标题】:spark submit giving "main" java.lang.NoSuchMethodError: scala.Some.value()Ljava/lang/Object火花提交给“主要” java.lang.NoSuchMethodError: scala.Some.value()Ljava/lang/Object
【发布时间】:2021-06-12 17:49:31
【问题描述】:

我正在尝试进行 spark 提交以检查与一些简单的 scala 代码的兼容性

println("Hi there")

val p = Some("pop")
p match {
  case Some(a) => println("Matched " + a)
  case _ => println("00000009")
}

scala 版本:2.12.5 火花版本:2.4.6

目前在通过 spark-submit 2.4.7 构建和运行 jar 之后 它给出了:

Hi there
Exception in thread "main" java.lang.NoSuchMethodError: scala.Some.value()Ljava/lang/Object;
    at MangoPop$.main(MangoPop.scala:9)
    at MangoPop.main(MangoPop.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)
    at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:845)
    at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:161)
    at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:184)
    at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86)
    at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:920)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:929)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
log4j:WARN No appenders could be found for logger (org.apache.spark.util.ShutdownHookManager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

从 maven 看来,spark 2.4.6 支持 scala 2.12 https://mvnrepository.com/artifact/org.apache.spark/spark-core


但是当使用 spark submit 3.0.2 运行时,它运行良好。
spark 2.4.6 我缺少什么
(也尝试使用 spark 2.4.7,即使没有实际的 spark 依赖项/代码,只有 scala)

运行 spark 提交为

~/Downloads/spark-2.4.7-bin-hadoop2.7/bin$  ./spark-submit --class=Test myprojectLocation..../target/scala-2.12/compatibility-check_2.12-0.1.jar


/spark-2.4.7-bin-hadoop2.7/bin$ ./spark-submit --version
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.4.7
      /_/
                        
Using Scala version 2.11.12, OpenJDK 64-Bit Server VM, 1.8.0_282
Branch HEAD
Compiled by user prashant on 2020-09-08T05:22:44Z
Revision 14211a19f53bd0f413396582c8970e3e0a74281d
Url https://prashant:Sharma1988%235031@gitbox.apache.org/repos/asf/spark.git
Type --help for more information.

还尝试从 2.4.6 下载 https://archive.apache.org/dist/spark/spark-2.4.6/

但找不到 scala 2.12


我们是否还可以明确提及在执行 spark-submit 或 spark-shell 时使用哪个 scala 版本,因为在配置中它似乎支持两者,但它使用了较低的版本,即 2.11
这是 load-spark-env.cmd 文件
rem Setting SPARK_SCALA_VERSION if not already set.

set ASSEMBLY_DIR2="%SPARK_HOME%\assembly\target\scala-2.11"
set ASSEMBLY_DIR1="%SPARK_HOME%\assembly\target\scala-2.12"

【问题讨论】:

  • 将 scala 版本更改为 2.11.8,并确保您的主类在 build.sbt 中定义
  • Spark 2.4.6 可以与 Scala 2.12 交叉编译,但是安装必须选择一个确切的版本,而且非常可能您的安装正在使用 Scala 2.11
  • 嗨@NassereddineBelghith,实际上我是使用scala 2.12
  • 嗨@LuisMiguelMejíaSuárez,我从spark.apache.org/news/spark-2-4-7-released.html 下载了spark 2.4.7。但 2.4.7 似乎也支持 scala 2.12,顺便说一句,您指的是哪个安装?
  • @supernatural 您使用 spark-submit 下载并安装的那个,运行 spark-shell 它将显示您确切的 Scala 它正在使用的版本,理想情况下你应该使用那个版本,甚至是错误修复版本(第三个数字)。 - 顺便说一句,如果您只是想学习 Spark,我建议您只从 sbt 运行它,而不是将其安装在您的计算机中,这样它将使用 Scala 您在build.sbt 文件中设置的版本

标签: scala apache-spark sbt


【解决方案1】:

问题在于 Spark 的运行时版本是 "Using Scala version 2.11.12",而您的代码 (MangoPop$.main(MangoPop.scala:9)) 使用 "scala version: 2.12.5" em>。

确保 Spark 的构建和运行时版本是相同的 Scala 版本。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,并且能够通过从头开始创建一个新的 conda 环境来解决它。

    在我的 Spark 项目中,我之前在使用 Scala 11 时遇到了问题,后来切换到了 Scala 12。大概是依赖项和库在这个过程中的某个地方搞砸了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多