Spark:java.lang.NoClassDefFoundError:scala/collection/mutable/ArraySeq$ofRef

问题描述 投票:0回答:2

我正在尝试使用

spark-submit
运行一个简单的字数统计程序并遇到异常。

线程“main”中出现异常 java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: scala/集合/可变/ArraySeq$ofRef 在 SparkWordCount$.main(SparkWordCount.scala:18)

从第 18 行开始的代码是

val count = input.flatMap(line ⇒ line.split(" "))
    .map(word ⇒ (word, 1))
    .reduceByKey(_ + _)

我的环境:

  • Windows 10
  • java版本“1.8.0_221”
  • spark-shell 显示:Spark 版本 2.4.4(使用 Scala 版本 2.11.12)
  • scala -version 命令显示 Scala 代码运行器版本 2.13.1
scala apache-spark
2个回答
2
投票

如评论中所述,解决方案是使用您将在集群上使用的相同版本的 Scala 进行开发。


0
投票

我遇到了同样的问题,这里我该如何解决它 我在cmd(Windows)中运行spark-shell并且它起作用了,因为SPARK_HOME环境变量是在我的系统/或用户环境变量中设置的。 在同一个cmd中,我可以看到scala版本和spark版本,我导航到scala项目基本目录中的target/build.sbt,并将scala版本更改为与上面提到的scala版本相同,如下所示 ThisBuild / scalaVersion := "2.12.15" 我有这种依赖性 库依赖项 += Seq( "org.apache.spark" %% "spark-core" % "3.3.4", // Spark 核心 "org.apache.spark" %% "spark-sql" % "3.3.4" // Spark SQL(可选,如果您需要 SQL 支持) )并且 3.3.4 与我的 Spark 安装版本相同,它们再次运行 Spark-Submit 命令,如下所示
Spark-submit --class "main.wordcountapp" --master "local[*]" "F:\path o ase_directory arget\scala-2.12\myscalaproj_2.12-0.1.0-SNAPSHOT.jar" 它运行为预期的 wordcountapp 是我的对象的名称,其中包含 main 函数 和“F:\path o ase_directory arget\scala-2.12\myscalaproj_2.12-0.1.0-SNAPSHOT.jar” 是生成的jar文件的名称 要生成此文件,请在 base_directory 中运行 sbt 包 希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.