Und*_*ood 1 scala apache-spark spark-streaming
我的 Spark Streaming 程序收到以下错误: Exception in thread "main" java.lang.NoClassDefFoundError:org/apache/spark/internal/Logging 我的 Spark 版本是 2.1,与集群中运行的版本相同。
网上查到的资料提示我旧版本的org.apache.spark.Logging在新版本变成了org.apache.spark.internal.Logging,导致找不到jar包。但是我的pom中引入的依赖是新版本。为什么找不到jar包?
<properties>
<spark.version>2.1.0</spark.version>
<scala.version>2.11</scala.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming-kafka-0-10_2.11</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>2.15.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>2.15.2</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
我已经多次遇到 java.lang.NoClassDefFoundError 了。我安装了 Spark-2.3.1,所以我认为它也应该适用于你的情况。
在我的情况下, java.lang.NoClassDefFoundError:org/apache/spark/internal/Logging 应该来自spark-core_2.11-2.3.1.jar,在你的情况下,它应该来自spark-core_2.11-2.1 .0.jar 基于问题中提到的 Spark 和 scala 版本
当你查看源代码时,它使用的是 org.slf4j._ 类。所以我的建议是在你的 pom 中添加这个依赖项,然后尝试。对于 NoClassDefFoundError,最好找到生成此错误的 jar,然后尝试回溯它。
下面是如何找出哪个 jar 导致 NoClassDefFound 错误,假设您在 ~/spark/jars 位置中拥有所有依赖项 jar。
for i in `ls ~/spark/jars/*.jar`;
do
jar tvf $i | grep org/apache/spark/internal/Logging;
echo "************** $i ************** ";
done
Run Code Online (Sandbox Code Playgroud)
请告诉我这是否解决了您的问题。
| 归档时间: |
|
| 查看次数: |
6672 次 |
| 最近记录: |