Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ClassNotFoundException scala.runtime.LambdaDeserialize当spark提交时_Scala_Apache Spark_Sbt_Spark Submit - Fatal编程技术网

ClassNotFoundException scala.runtime.LambdaDeserialize当spark提交时

ClassNotFoundException scala.runtime.LambdaDeserialize当spark提交时,scala,apache-spark,sbt,spark-submit,Scala,Apache Spark,Sbt,Spark Submit,我在上遵循Scala教程 我的scala文件 /* SimpleApp.scala */ import org.apache.spark.SparkContext import org.apache.spark.SparkContext._ import org.apache.spark.SparkConf object SimpleApp { def main(args: Array[String]) { val logFile = "/data/README.md" // Sh

我在上遵循Scala教程

我的scala文件

/* SimpleApp.scala */
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf

object SimpleApp {
  def main(args: Array[String]) {
    val logFile = "/data/README.md" // Should be some file on your system
    val conf = new SparkConf().setAppName("Simple Application")
    val sc = new SparkContext(conf)
    val logData = sc.textFile(logFile, 2).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")
    sc.stop()
  }
}
和build.sbt

name := "Simple Project"

version := "1.0"

scalaVersion := "2.12.4"

libraryDependencies += "org.apache.spark" % "spark-core_2.10" % "2.2.0" 
我成功地运行了
sbt包
(已经删除了除scala源代码和build.sbt之外的所有内容,然后再次运行
sbt包

然而,当我运行spark submit时

$SPARK_HOME/bin/spark-submit --class "SimpleApp" --master local[4] simple-project_2.12-1.0.jar 
我出错了

java.lang.NoClassDefFoundError: scala/runtime/LambdaDeserialize

正如@Alexey所说,将Scala版本更改为2.11解决了这个问题

build.sbt

name := "Simple Project"

version := "1.0"

scalaVersion := "2.12.4"

libraryDependencies += "org.apache.spark" % "spark-core_2.10" % "2.2.0" 
name := "Simple Project"

version := "1.0"

scalaVersion := "2.11.11"

libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.2.0" 
请注意,Scala版本必须与Spark匹配。
查看artifactId,spark-core_2.11表示它与scala 2.11兼容(无向后或向前兼容)

以下是spark 2.4.1最新发布示例的build.sbt条目,如所示:

尽管IntelliJ IDE内部一切正常,但应用程序仍会失败,出现以下异常:

Caused by: java.lang.NoClassDefFoundError: scala/runtime/LambdaDeserialize
使用“sbt package”命令创建包并从命令行运行spark submit后,如下所示:

spark-submit -v --class SimpleApp --master local[*] target\scala-2.12\simpleapp_2.12-1.0.jar

我在遵循中提供的说明时遇到类似问题

我的设置详细信息: Spark版本:2.4.3 Scala版本:2.12.8

然而,当我将sbt文件更改为下面的配置时,一切都很好。(编译和运行应用程序jar)

名称:=“简单项目”

版本:=“1.0”

规模厌恶:=“2.11.11”

libraryDependencies+=“org.apache.spark”%%“spark sql”%%“2.4.3”


看起来spark 2.4.3仅与2.11.11 Scala版本兼容。在编译示例项目时,sbt从“”下载了Scala 2.11库。

对于Spark 2.4.3使用的Scala版本,肯定存在一些混淆。 截至今天(2019年11月25日),spark 2.4.3的文档主页声明:

Spark在Java8+、Python2.7+/3.4+和R3.1+上运行。对于Scala API,Spark 2.4.3使用Scala2.12。您需要使用兼容的Scala版本(2.12.x)

请注意,自Spark 2.2.0起,对Java 7、Python 2.6和2.6.5之前的旧Hadoop版本的支持已被删除。对Scala 2.10的支持从2.3.0开始被删除。从Spark 2.4.1开始,Scala 2.11的支持已被弃用,并将在Spark 3.0中删除


因此,Scala版本应该是2.12

如果您使用的是不兼容的Scala和Spark版本,请参见,例如,将
Scalaversation:=“2.12.4”
更改为
Scalaversation:=“2.11.8”
Spark-core_2.10”
更改为
Spark-core_2.11”
。顺便说一句,如果您刚刚开始使用Spark,改用。请。如果是问题,请创建一个新问题是的,这是使用Scala 2.12.8的最新Spark版本2.4.1的新问题此问题在新Spark 2.4.2发布后已解决today@diopek,不,不是。我在尝试
spark提交
一个使用spark 2.4.3和Scala 2.12.8构建的示例应用程序时遇到了相同的问题。@satorg spark 2.4.3预构建发行版回到了使用Scala 2.11.12构建的版本。下面是完整的列表:Spark 1.x使用Scala 2.10构建。Spark 2.0.0-Spark 2.4.1采用Scala 2.11构建。Spark 2.4.2是目前唯一使用Scala 2.12构建的版本。Spark 2.4.3回到了Scala 2.11。
spark-submit -v --class SimpleApp --master local[*] target\scala-2.12\simpleapp_2.12-1.0.jar