首页 > 解决方案 > java.lang.ClassNotFoundException 与 spark-submit

问题描述

我安装了 spark 2.4.3 和 sbt 1.2.8。我在windows 10 pro下。

java -version给出:

java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

我尝试从 spark.apache.org执行快速入门

在我使用 sbt 之前,一切都运行良好。然后我得到以下异常

java.lang.ClassNotFoundException:scala.runtime.LambdaDeserialize

我读了很多关于拥有良好版本的火花和良好版本的scala的重要性

我的 build.sbt 是:

name := "simple-app"
version := "1.0"
scalaVersion := "2.12.8"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.4.3"    

我的代码是:

import org.apache.spark.sql.SparkSession

object SimpleApp {
  def main(args: Array[String]) {
    print("Hello !\r\n")
    val logFile = "D:/bin/spark/README.md" // Should be some file on your system
    val spark = SparkSession.builder.appName("Simple Application").getOrCreate()
    val logData = spark.read.textFile(logFile).cache()
    val numAs = logData.filter(line => line.contains("a")).count()
    val numBs = logData.filter(line => line.contains("b")).count()
    println(s"Lines with a: $numAs, Lines with b: $numBs")
    spark.stop()
  }
}

如果我评论

    //val numAs = logData.filter(line => line.contains("a")).count()
    //val numBs = logData.filter(line => line.contains("b")).count()
    //println(s"Lines with a: $numAs, Lines with b: $numBs")

Hello !我在控制台中读得很清楚。

我运行每一行都没有错误mainspark-shell

对应的python脚本提交成功

我想念什么?

标签: scalaapache-spark

解决方案


最后,它实际上是 Spark/Scala 版本的兼容性问题

https://spark.apache.org/downloads.html可以阅读:

请注意,Spark 是使用 Scala 2.11预构建的,但版本 2.4.2 是使用 Scala 2.12 预构建的

我想念从 spark 的 2.4.2 版本中阅读和理解的内容。在快速启动台旁边:

scalaVersion := "2.12.8"

最后我检查了jars我的 spark 安装目录,我发现:

scala-compiler-2.11.12.jar
scala-library-2.11.12.jar
...

所以我将我的更改built.sbt为:

scalaVersion := "2.11.12"

并解决问题(至少这个问题)。


推荐阅读