关于scala:NoSuchMethodError:org.apache.spark.internal.Logging

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

    而且仍然相同的错误。 ??


    问题解决了。

    当我打开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>