我试图在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。什么是正确的依赖?
答案 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"