【问题标题】:Spark Twitter Streaming exception : (org.apache.spark.Logging) classnotfoundSpark Twitter 流异常:(org.apache.spark.Logging)classnotfound
【发布时间】:2020-04-20 03:57:40
【问题描述】:

我正在尝试使用 Maven 使用 Scala 的 Spark Twitter Streaming 示例,但运行它时出现以下错误:

原因:java.lang.ClassNotFoundException: org.apache.spark.Logging

以下是我的依赖项:

<dependencies>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.10</artifactId>
    <version>2.0.0</version>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming_2.10</artifactId>
    <version>2.0.0</version>
</dependency> 
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming-twitter_2.11</artifactId>
    <version>1.6.2</version> 
</dependency> 

我知道Logging 已移至org.apache.spark.internal.Logging 但我不知道是不是这个原因,我已经尝试将依赖项的版本更改为最新版本但没有成功。

【问题讨论】:

  • 问题解决了吗?

标签: maven twitter apache-spark


【解决方案1】:

TLDR;

org.apache.spark.Logging 类在 Spark 版本 1.5.2 或更低版本中可用(尽管我没有在所有较低版本上进行测试),但在高于相同版本的版本中不可用。


这一切都归结为使用Apache Spark不兼容版本:

1。让我们在Spark 2.0.0 上尝试import org.apache.spark.Logging

user@ubuntu:~$ /opt/spark/bin/spark-shell
Welcome to
  ____              __
 / __/__  ___ _____/ /__
_\ \/ _ \/ _ `/ __/  '_/
/___/ .__/\_,_/_/ /_/\_\   version 2.0.0
   /_/      
Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_101)
scala> import org.apache.spark.Logging
<console>:23: error: object Logging is not a member of package org.apache.spark
import org.apache.spark.Logging
          ^

找不到类org.apache.spark.Logging


2。让我们在Spark 1.6.2 上尝试import org.apache.spark.Logging

(与上述相同,即 找到类 org.apache.spark.Logging。)


3。让我们尝试import org.apache.spark.Logging Spark 1.5.2:

user@ubuntu:~$ /opt/spark-1.5.2-bin-hadoop2.6/bin/spark-shell
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 1.5.2
      /_/
Using Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_101)
scala> import org.apache.spark.Logging
import org.apache.spark.Logging

是的!可用并成功导入

如您所见,Spark-Streaming-Twitter 所需的 org.apache.spark.Logging 在 Spark 版本 1.5.2 或更低版本中可用,因此我建议您使用 1.5.2 或更低版本的 spark。

因此,您应该将 maven 依赖项替换为以下内容: (假设你使用的是Scala 2.11.x

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>1.5.2</version>
</dependency>

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming_2.11</artifactId>
    <version>1.5.2</version>
</dependency>

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming-twitter_2.11</artifactId>
    <version>1.6.2</version>
</dependency>

请注意,artifactId:2.11 指的是 scala 版本,version:1.5.21.6.2 指的是库(spark-core 或 spark-streaming-twitter)版本。

【讨论】:

  • 不降级 Apache Spark 版本就无法做到这一点。
  • 我更改为 org.apache.bahir 并且它工作正常,完美工作。我不认为降级 spark 是前进的方向。
  • @ypriverol 是的。你做的是对的。欢迎您编辑我的答案,否则我会尽快完成。
【解决方案2】:

好消息!有another dependency解决了这个问题,兼容Spark 2.x。

对于 SBT,使用此依赖项:

"org.apache.bahir" %% "spark-streaming-twitter" % "2.0.0"

【讨论】:

  • 我正在使用以下依赖项,但结果相同。 libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.2.0" // mvnrepository.com/artifact/org.apache.spark/… //libraryDependencies += "org.apache.spark" % "spark-streaming-twitter_2.11 " % "1.6.3" % "provided" libraryDependencies+="org.apache.bahir" %% "spark-streaming-twitter" % "2.0.0" //--packages "org.apache.spark:spark-streaming -twitter_2.11:1.6.3" libraryDependencies += "org.apache.spark" % "spark-streaming_2.11" % "2.2.0"
  • 感谢您的提示。第一次工作
【解决方案3】:

我使用spark-streaming-kafka_2.11-1.6.3.jar 遇到了这个异常,并改用spark-streaming-kafka-0-8_2.11-2.1.0.jar 解决了它

【讨论】:

  • 为我工作!
【解决方案4】:

不改变版本,我们可以解决问题。

https://raw.githubusercontent.com/swordsmanliu/SparkStreamingHbase/master/lib/spark-core_2.11-1.5.2.logging.jar 下载 spark-core_2.11-1.5.2.logging.jar 并将其粘贴到 spark\jars 文件夹中。在 spark-submit command 中包含这个 jar 路径。它解决了我的问题。

【讨论】:

    【解决方案5】:

    按照@ypriverol 的建议,将依赖项更改为org.apache.bahirApache Bahir 提供对包括 Spark 在内的许多 Apache 分析平台的扩展。

    <dependency>
        <groupId>org.apache.bahir</groupId>
        <artifactId>spark-streaming-twitter_2.11</artifactId>
        <version>2.2.0</version>
    </dependency>
    

    【讨论】:

      【解决方案6】:

      尝试添加 https://mvnrepository.com/artifact/commons-logging/commons-logging 作为依赖项并再次构建 jar..

      【讨论】:

        猜你喜欢
        • 2019-02-25
        • 2012-06-30
        • 1970-01-01
        • 1970-01-01
        • 2018-12-01
        • 2012-10-13
        • 2016-08-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多