我正在使用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
,但我不知道是否是原因,我已经尝试将依赖项的版本更改为最新版本,但是没有运气。
答案 0 :(得分:16)
TLDR;
类org.apache.spark.Logging
在Spark版本1.5.2
或更低版本中可用(虽然我没有在所有较低版本上测试)但在高于相同版本的版本中不可用。
Apache Spark
:
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
。Spark 1.6.2
上import org.apache.spark.Logging
: (与上述相同,即类org.apache.spark.Logging 不找到。)
Spark 1.5.2
上import org.apache.spark.Logging
: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
或较低版本的火花。
因此,您应该用以下内容替换您的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.2
或1.6.2
引用库(spark {核心或spark-streaming-twitter)版本。
答案 1 :(得分:10)
对于SBT,请使用此依赖关系:
"org.apache.bahir" %% "spark-streaming-twitter" % "2.0.0"
答案 2 :(得分:2)
如果不更改版本,我们可以解决问题。
从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命令中包含此jar路径。它解决了我的问题。
答案 3 :(得分:0)
正如@ypriverol建议的那样,将依赖关系更改为org.apache.bahir
。 Apache Bahir提供了许多Apache分析平台的扩展,包括Spark。
<dependency>
<groupId>org.apache.bahir</groupId>
<artifactId>spark-streaming-twitter_2.11</artifactId>
<version>2.2.0</version>
</dependency>
答案 4 :(得分:0)
尝试添加https://mvnrepository.com/artifact/commons-logging/commons-logging作为依赖项,然后再次构建jar。.