我安装了spark 2.4.3和sbt 1.2.8。我在Windows 10专业版下。
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执行Quick Start
一切正常,直到我使用sbt。然后,我得到以下异常
java.lang.ClassNotFoundException:scala.runtime.LambdaDeserialize
我读了很多关于使用好版本的scala和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 !
。
我在main
中运行spark-shell
的每一行都没有错误。
相应的python脚本已成功提交
我想念什么?
答案 0 :(得分:0)
最后,这实际上是Spark / Scala版本的兼容性问题
从https://spark.apache.org/downloads.html中可以读到:
请注意,Spark是使用Scala 2.11 预先构建的,但版本2.4.2除外, 它是使用Scala 2.12预先构建的
我想念的内容是从2.4.2版本的spark 中阅读和理解的。快速入门站旁:
scalaVersion := "2.12.8"
最后,我检查了我的spark安装的jars
目录,发现:
scala-compiler-2.11.12.jar
scala-library-2.11.12.jar
...
所以我将built.sbt
更改为:
scalaVersion := "2.11.12"
并解决该问题(至少此问题)。