Maven Spark Twitter流异常:(org.apache.Spark.Logging)classnotfound

Maven Spark Twitter流异常:(org.apache.Spark.Logging)classnotfound,maven,twitter,apache-spark,Maven,Twitter,Apache Spark,我正在使用Maven使用Scala尝试Spark Twitter流媒体示例,但运行该示例时出现以下错误: 原因:java.lang.ClassNotFoundException:org.apache.spark.Logging 以下是我的依赖项: <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2

我正在使用Maven使用Scala尝试Spark Twitter流媒体示例,但运行该示例时出现以下错误:

原因: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> 

org.apache.spark
spark-core_2.10
2.0.0
org.apache.spark
spark-2.10
2.0.0
org.apache.spark
spark-streaming-twitter_2.11
1.6.2 

我知道
日志记录
已被移动到
org.apache.spark.internal.Logging
,但我不知道这是否是原因,我已经尝试将依赖项的版本更改为最新版本,但没有成功。

TLDR

Class
org.apache.spark.Logging
在spark版本或更低版本中可用(尽管我没有在所有更低版本上进行测试),但在高于相同版本的版本中不可用。
这一切都归结为使用不兼容版本的:

1.让我们尝试导入org.apache.spark.Logging
on:
对它可用并已成功导入 正如您所看到的,
org.apache.spark.Logging
是spark所需的,它有spark版本或更低版本,因此我建议您使用
1.5.2
或更低版本的spark

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


org.apache.spark
spark-core_2.11
1.5.2
org.apache.spark
spark-U 2.11
1.5.2
org.apache.spark
spark-streaming-twitter_2.11
1.6.2
请注意,
artifactId
2.11
指的是
scala
版本,
version
1.5.2
1.6.2
指的是库(spark core或spark streaming twitter)版本。

好消息!有一个解决这个问题的方法,它与Spark 2.x兼容

对于SBT,使用此依赖项:

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

不改变版本,我们就能解决问题


从下载spark-core_2.11-1.5.2.logging.jar并将其粘贴到spark\jars文件夹中。在spark submit命令中包含此jar路径。它解决了我的问题。

我使用
spark-streaming-kafka_2.11-1.6.3.jar
遇到了这个异常,并使用
spark-streaming-kafka-0-8_2.11-2.1.0.jar
解决了这个问题,而不是像@ypriverol建议的那样,将依赖项更改为
org.apache.bahir
。提供对许多Apache分析平台(包括Spark)的扩展

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

org.apache.bahir
spark-streaming-twitter_2.11
2.2.0

尝试添加依赖项并再次构建jar。

问题解决了吗?如果不降级Apache Spark版本,就无法做到这一点。我改为org.Apache.bahir,它可以正常工作。我不认为降低spark级别是前进的方向。@ypriverol是的。你所做的是正确的。欢迎您编辑我的答案,否则我很快就会这么做。我使用下面的依赖项,但结果是一样的。libraryDependencies+=“org.apache.spark”%%“spark-core_2.11”%%“2.2.0”////libraryDependencies+=“org.apache.spark”%%“spark-streaming-twitter_2.11”%%“1.6.3%”提供了“libraryDependencies+=“org.apache.bahir”%%“spark-streaming-twitter”%%“2.0.0”//-包”org.apache.spark:spark-streaming-twitter_2.11:1.6.3“libraryDependencies+=“org.apache.spark”%”spark-streaming_2.11“%”2.2.0“谢谢你的提示。第一次工作对我有用!
<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>
"org.apache.bahir" %% "spark-streaming-twitter" % "2.0.0"
<dependency>
    <groupId>org.apache.bahir</groupId>
    <artifactId>spark-streaming-twitter_2.11</artifactId>
    <version>2.2.0</version>
</dependency>