原因:java.lang.BootstrapMethodError:java.lang.NoClassDefFoundError:scala/runtime/LambdaDeserialize

原因:java.lang.BootstrapMethodError:java.lang.NoClassDefFoundError:scala/runtime/LambdaDeserialize,scala,maven,apache-spark,Scala,Maven,Apache Spark,我试图使用maven构建下面的spark scala项目。构建成功,但当我运行该jar时,它给出了以下错误。请帮助我修复 spark scala码 package com.spark.DataAnalysis import org.apache.log4j.Level import org.apache.spark.sql.{Dataset, SparkSession} import org.apache.spark.sql.functions._

我试图使用maven构建下面的spark scala项目。构建成功,但当我运行该jar时,它给出了以下错误。请帮助我修复

spark scala码

package com.spark.DataAnalysis

      import org.apache.log4j.Level
      import org.apache.spark.sql.{Dataset, SparkSession}
      import org.apache.spark.sql.functions._
      import org.apache.spark.SparkContext
      import org.apache.spark.SparkConf

object TwitterData {
  def main(args: Array[String]) {
    println("Start")
    System.setProperty("hadoop.home.dir","C://Sankha//Study//spark-2.3.4-bin-hadoop2.7//spark-2.3.4-bin-hadoop2//spark-2.3.4-bin-hadoop2.7")
    val conf = new SparkConf().setAppName("Spark Scala WordCount Example").setMaster("local[1]")
        val spark = SparkSession.builder().appName("CsvExample").master("local").getOrCreate()
        val sc = new SparkContext(conf)
        val csvData = sc.textFile("C:\\Sankha\\Study\\data\\twitter-airline-sentiment\\Tweets.csv",3)
        val map_data = csvData.map(x=> x.split(",")).filter(x=> (x.length  < 13)).filter(x=> x(5) == "Virgin America")
        println(map_data.count())

  }
}
从命令行运行spark代码,如下所示

spark-submit --class sparkWCExample.spWCExample.Twitter --master local[2] C:\Sankha\Study\spark_ws\spWCExample\target\spWCExample-0.0.1-SNAPSHOT.jar C:\Sankha\Study\spark_ws\spWCExample\target\out


例外情况:

20/03/04 02:45:58 INFO Executor: Adding file:/C:/Users/sankh/AppData/Local/Temp/spark-ae5c0e2c-76f7-42d9-bd2a-6b1f5b191bd8/userFiles-ef86ac49-debf-4d19-b2e9-4f0c1cb83325/spWCExample-0.0.1-SNAPSHOT.jar to class loader
20/03/04 02:45:58 ERROR Executor: Exception in task 0.0 in stage 0.0 (TID 0)
java.io.IOException: unexpected exception type
        at java.io.ObjectStreamClass.throwMiscException(ObjectStreamClass.java:1736)
        at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1266)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2078)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211)

Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at java.lang.invoke.SerializedLambda.readResolve(SerializedLambda.java:230)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1260)
        ... 61 more
Caused by: java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: scala/runtime/LambdaDeserialize
        at sparkWCExample.spWCExample.Twitter$.$deserializeLambda$(Twitter.scala)
        ... 71 more
Caused by: java.lang.NoClassDefFoundError: scala/runtime/LambdaDeserialize
        ... 72 more
Caused by: java.lang.ClassNotFoundException: scala.runtime.LambdaDeserialize
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 72 more
请告知

POM xml如下所示:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>sparkWCExample</groupId>
  <artifactId>spWCExample</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>spWCExample</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>2.4.5</version>
        </dependency>

            <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.12</artifactId>
            <version>2.4.5</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.scala-lang/scala-library -->
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>2.12.3</version>
        </dependency>
  </dependencies>
  <build>
 <plugins>
     <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
         <version>3.3</version>
     </plugin>
 </plugins>
 </build>
</project>

4.0.0
Sparkwce示例
SPWC示例
0.0.1-快照
罐子
SPWC示例
http://maven.apache.org
UTF-8
朱尼特
朱尼特
3.8.1
测试
org.apache.spark
spark-core_2.12
2.4.5
org.apache.spark
spark-sql_2.12
2.4.5
org.scala-lang
scala图书馆
2.12.3
org.apache.maven.plugins
maven编译器插件
3.3

请检查并让我知道您的代码和POM似乎存在一些问题

说到代码,您已经分别创建了sparksession和sparkcontext,尽管您可以只创建sparksession对象,并且它具有sparkcontext。 此外,您已经在代码和spark submit命令中设置了spark属性。我建议您创建一个单独的SparkProperty文件,并将其传递到spark submit命令(我也将共享该文件和命令)

因此,您可以按如下方式编写代码:

   package com.spark.DataAnalysis

      import org.apache.log4j.Level
      import org.apache.spark.sql.{Dataset, SparkSession}
      import org.apache.spark.sql.functions._
      import org.apache.spark.SparkContext
      import org.apache.spark.SparkConf

object TwitterData {
  def main(args: Array[String]) {
    println("Start")
    System.setProperty("hadoop.home.dir","C://Sankha//Study//spark-2.3.4-bin-hadoop2.7//spark-2.3.4-bin-hadoop2//spark-2.3.4-bin-hadoop2.7")
        val spark = SparkSession.builder().appName("CsvExample").master("local").getOrCreate()
        val csvData = .textFile("C:\\Sankha\\Study\\data\\twitter-airline-sentiment\\Tweets.csv",3)
        val map_data = csvData.map(x=> x.split(",")).filter(x=> (x.length  < 13)).filter(x=> x(5) == "Virgin America")
        println(map_data.count())
        spark.close

  }
}
spark.master    local[2]
spark.submit.deployMode client
spark.driver.memory     2G
spark.executor.memory   2G
spark.executor.instances        2
spark.executor.cores    2
spark.driver.maxResultSize      1g
现在,添加sparkProperties.properties文件后,您的spark submit命令将更易于编写:

spark-submit --class sparkWCExample.spWCExample.Twitter C:\Sankha\Study\spark_ws\spWCExample\target\spWCExample-0.0.1-SNAPSHOT.jar C:\Sankha\Study\spark_ws\spWCExample\target\out --properties-file sparkProperties.properties

我希望我已经详细地回答了你的问题。如果您还有任何疑问,请随时询问。

您可以在此处共享您的pom.xml吗?我已更新了上面的pom.xml。请立即告知错误关闭HookManager:删除Spark temp目录时出现异常:C:\Sankha\temp\Spark-0463536d-891f-420e-b555-F8E4243E4F9\userFiles-165a61af-5484-4580-bc8e-c009816b076c java.io.IOException:未能删除:C:\Sankha\temp\spark-0463536d-891f-420e-b555-f8e42243e4f9\userFiles-165a61af-5484-4580-bc8e-c009816b076c\spWCExample-0.0.1-SNAPSHOT-jar-with-dependencies.jar我尝试了您的步骤,它成功了。谢谢。我现在只收到下面的temp文件删除错误,这与之前收到的输出一样好。我是spark的新手,因此,如果我看到其他问题,我可能会再次与您联系。希望您能帮助meSure,您可以随时联系。对于上面列出的错误,您可以尝试在完成计算后关闭SparkSession。这将确保为其他应用程序释放集群资源。我已经对上面的代码做了适当的更改。请告诉我这是否有帮助。你能帮我解决以下我面临的问题吗
spark.master    local[2]
spark.submit.deployMode client
spark.driver.memory     2G
spark.executor.memory   2G
spark.executor.instances        2
spark.executor.cores    2
spark.driver.maxResultSize      1g
spark-submit --class sparkWCExample.spWCExample.Twitter C:\Sankha\Study\spark_ws\spWCExample\target\spWCExample-0.0.1-SNAPSHOT.jar C:\Sankha\Study\spark_ws\spWCExample\target\out --properties-file sparkProperties.properties