NoSuchMethodError: org.apache.spark.internal.Logging
我正在尝试运行一个由Spark结构化流组成的应用程序-来自kafka的数据输入。
Spark版本是2.4.0,scala版本是2.12.7。
我正在使用sbt制作多个胖子-我的项目是多模块项目。
建立罐子不是问题。 当我用jar尝试spark-submit时,发生了NoSuchMethodError。
我从spark-sql-kafka-0-10中删除了provided范围。
val sparkSqlKafka ="org.apache.spark" %%"spark-sql-kafka-0-10" % sparkVersion
在assemblyMergeStrategy中,我在下面添加了一行。
case"META-INF/services/org.apache.spark.sql.sources.DataSourceRegister" => MergeStrategy.concat
这是整个错误日志。
编辑1。
整个依赖项如下。
编辑2。
我发现slf4j-api有一些依赖版本问题。
因此,我已将构建配置更改为仅使用slf4j-api的一个版本-具有spark-core依赖项的版本匹配。 并排除其他slf4j-api。
而且仍然相同的错误。 :(
编辑3。
我在spark-submit脚本中添加了--packages org.apache.spark:spark-sql-kafka-0-10_2.12:2.4.0。
而且仍然相同的错误。 ??
-
在Kafka Spark Stream上获取错误NoClassDefFoundError的可能重复项:org.apache.spark.internal.Logging
-
@AlexDing我读了这个问题,但我认为这个问题与我的没什么不同。 我的问题是NoSuchMethodError,而您链接的问题是NoClassDefFoundError。
-
我有同样的问题。 并降级scala版本帮助。 但是,找到一种解决方法来解决scala 2.12的问题– Grigoriev Nick刚编辑删除
问题解决了。
当我打开spark-shell时,我发现spark版本是2.4.0,scala版本是2.11。
我在build.sbt中的scala版本是2.12。
Scala版本是关键!
谢谢大家
请更新您的依赖关系。
1 2 3 4 5 6 7 8 9 10
| <dependency>
<groupId>org.apache.logging.log4j</groupId>
log4j-api</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
log4j-core</artifactId>
<version>2.7</version>
</dependency> |
-
您可以使用mvn dependency:tree打印依赖项吗,也许原因是依赖项冲突。
-
我在我的原始问题中添加了整个依赖项。
-
它不完整,项目中总是有很多依赖项。依赖项A1可能依赖于B1和C1,依赖项A2可能依赖于B2和D1,依赖项A1和A2依赖于B(1和2)的不同版本,但是如果保留了B1而没有保留,则不是所有版本的B都会保留。如果A2有必要的方法m1,则会抛出NoSuchMethodError,因此我们必须检查依赖关系及其依赖关系,命令mvn dependency:tree将帮助我们查找重复的和冲突的依赖关系。
-
例如,我以前遇到过类似的问题。我必须从弹性搜索客户端中排除依赖项。所以我将排除项添加到我的pom文件中: io.netty netty-handler ...etc
-
好吧,我明白。我会尝试你在sbt中所说的。
-
您能否提供更多有关部署环境的信息?您在集群上运行它吗?您是否正在使用cloudera或HDP或类似的东西?集群环境Spark版本可能与您的开发环境不匹配。
-
@PietariKettunen是的,我在群集上运行它,并且群集env spark版本与dev env匹配。两种spark版本均为2.4.0。在本地运行应用程序时没有问题。我想..也许我的胖子罐出了点问题。当我用胖子罐运行spark-submit时尝试了--packages org.apache.spark:spark-sql-kafka-0-10_2.12:2.4.0,但没有工作。 :(
-
Ive添加了Edit 2。
-
我有同样的问题。并降级scala版本帮助。但是做一些解决方法来解决scala 2.12的问题