我正在尝试使用
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(_ + _)
我的环境:
如评论中所述,解决方案是使用您将在集群上使用的相同版本的 Scala 进行开发。
我遇到了同样的问题,这里我该如何解决它
我在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 包
希望有帮助。