SBT中Spark-Streaming和Twiter-Streaming的依赖关系

时间:2017-09-15 07:44:06

标签: apache-spark sbt spark-streaming twitter-streaming-api

我试图在build.sbt中使用以下依赖项,但它一直给出“未解决的依赖”问题。

libraryDependencies += "org.apache.bahir" %% "spark-streaming-twitter_2.11" % "2.2.0.1.0.0-SNAPSHOT"
libraryDependencies += "org.apache.spark" %% "spark-streaming" % "2.2.0"

我正在使用Spark 2.2.0。什么是正确的依赖?

2 个答案:

答案 0 :(得分:0)

以下是您需要为Spark-Twitter Streaming添加的依赖项。

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming_2.11</artifactId>
    <version>2.0.0</version>
</dependency>
<dependency>
   <groupId>org.apache.bahir</groupId>
   <artifactId>spark-streaming-twitter_2.11</artifactId>
   <version>2.0.0</version>
</dependency>
<dependency>
   <groupId>org.twitter4j</groupId>
   <artifactId>twitter4j-core</artifactId>
   <version>4.0.4</version>
  </dependency>
 <dependency>
   <groupId>org.twitter4j</groupId>
   <artifactId>twitter4j-stream</artifactId>
   <version>4.0.4</version>
   </dependency >
 <dependency>
  <groupId>com.twitter</groupId>
  <artifactId>jsr166e</artifactId>
  <version>1.1.0</version>  
</dependency>

答案 1 :(得分:0)

这个问题是前一段时间发布的,但是本周我遇到了同样的问题。这是仍然存在问题的人的解决方案:

您可以看到here,用于使用SBT导入lib的工件的正确语法为"spark-streaming-twitter",而对于Maven来说,正确的语法为"spark-streaming-twitter_2.11"。这是因为出于某种原因,当使用SBT导入时,Scala版本会在以后附加(最后一个数字将被截断)。

但事实是,唯一起作用的工件是"spark-streaming-twitter_2.11"。例如,对于Scala 2.12,您将出现错误

[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: org.apache.bahir#spark-streaming-twitter_2.12;2.3.2: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::

但是,如果您使用Scala 2.11,它应该可以正常工作。这是一个有效的sbt文件:

name := "twitter-read"

version := "0.1"

scalaVersion := "2.11.12"


libraryDependencies += "org.apache.spark" %% "spark-core" % "2.4.2"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.4.2"
libraryDependencies += "org.apache.spark" %% "spark-streaming" % "2.4.2" % "provided"

libraryDependencies += "org.twitter4j" % "twitter4j-core" % "3.0.3"
libraryDependencies += "org.twitter4j" % "twitter4j-stream" % "3.0.3"

libraryDependencies += "org.apache.bahir" %% "spark-streaming-twitter" % "2.3.2"