Вызывается: java .lang.BootstrapMethodError: java .lang.NoClassDefFoundError: scala / runtime / LambdaDeserialize - PullRequest
0 голосов
/ 04 марта 2020

Я пытался построить нижеприведенный проект spark scala с использованием maven. Сборка прошла успешно, но когда я запустил этот 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())

  }
}

код сборки maven:

mvn package

Запуск кода зажигания из командной строки, как показано ниже

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>

Пожалуйста, проверьте и дайте мне знать

1 Ответ

1 голос
/ 05 марта 2020

Кажется, что есть некоторые проблемы с вашим кодом и вашим POM.

Говоря о коде, вы создали отдельную свечу и спонтанный текст, даже если вы можете просто создать объект SparkSession и он имеет спаркконтекст присутствует. Кроме того, вы установили свойства spark как в своем коде, так и в своей команде spark-submit. Я рекомендую вам создать отдельный файл sparkProperties и передать его вашей команде 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

  }
}

Теперь, подходя к вашей помещике. xml, вы не добавили плагин maven-Assembly-Assembly и только что использовали плагин компилятора maven. Это означает, что ваш код скомпилирован с использованием зависимостей, но зависимости не упакованы в jar. В этом случае ваша scala зависимость не была упакована и также не найдена в вашей системе, поэтому она выдала вам ошибку. Вот почему всегда лучше использовать плагин для сборки maven.

Итак, ваш новый 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>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.4</version>
        <configuration>
            <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
        </configuration>
        <executions>

            <execution>
                <id>assemble-all</id>
                <phase>package</phase>
                <goals>
                    <goal>single</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
</build>

Пример Файл свойств выглядит следующим образом:

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 будет намного легче написать после добавления файла sparkProperties.properties:

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

Надеюсь, я ответил Ваш вопрос продуманно. Не стесняйтесь спрашивать, есть ли у вас другие сомнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...