无法在 Spark Scala 中导入 org.apache.spark.streaming.twitter
Unable to import org.apache.spark.streaming.twitter in Spark Scala
以下导入无法在 SBT 中编译
import org.apache.spark.streaming.twitter._
[error] /home/hduser/workspace/TweetStream/src/main/scala/TweetStream.scala:8: object twitter is not a member of package org.apache.spark.streaming
[error] import org.apache.spark.streaming.twitter._
[error]
随后还有以下内容
val tweetStream = TwitterUtils.createStream(ssc, None, filters, StorageLevel.MEMORY_ONLY_SER_2).map(gson.toJson(_))
[error] /home/hduser/workspace/TweetStream/src/main/scala/TweetStream.scala:36: not found: value TwitterUtils
[error] val tweetStream = TwitterUtils.createStream(ssc, None, filters, StorageLevel.MEMORY_ONLY_SER_2).map(gson.toJson(_))
[error] ^
^
下面build.sbt是通过所有的依赖解析
name := "TweetStream"
version := "1.0"
scalaVersion := "2.11.7"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.5.2"
libraryDependencies += "org.apache.spark" %% "spark-streaming" % "1.5.2"
libraryDependencies += "org.apache.spark" % "spark-streaming_2.11" % "1.5.2"
libraryDependencies += "com.google.code.gson" % "gson" % "2.7"
libraryDependencies += "org.twitter4j" % "twitter4j-core" % "4.0.4"
我是不是添加错了依赖?
您需要添加以下依赖项:
// https://mvnrepository.com/artifact/org.apache.spark/spark-streaming-twitter_2.11
libraryDependencies += "org.apache.spark" % "spark-streaming-twitter_2.11" % "1.5.2"
PS: Scala 版本的其他依赖项可能会给您带来一些问题。您应该为其他 spark 依赖项指定 _2.11。
这是 build.sbt ...
lazy val root = (project in file(".")).
settings(
name := "TweetStream",
version := "1.0",
scalaVersion := "2.11.7",
mainClass in Compile := Some("TweetStream")
)
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "1.5.2",
"org.apache.spark" %% "spark-streaming" % "1.5.2",
"org.apache.spark" % "spark-streaming-twitter_2.11" % "1.5.2",
"com.google.code.gson" % "gson" % "2.7",
"org.twitter4j" % "twitter4j-core" % "3.0.3",
"org.twitter4j" % "twitter4j-stream" % "3.0.3"
)
// META-INF discarding
mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) =>
{
case PathList("META-INF", xs @ _*) => MergeStrategy.discard
case x => MergeStrategy.first
}
}
以及项目子文件夹中的assembly.sbt
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.3")
以下导入无法在 SBT 中编译
import org.apache.spark.streaming.twitter._
[error] /home/hduser/workspace/TweetStream/src/main/scala/TweetStream.scala:8: object twitter is not a member of package org.apache.spark.streaming
[error] import org.apache.spark.streaming.twitter._
[error]
随后还有以下内容
val tweetStream = TwitterUtils.createStream(ssc, None, filters, StorageLevel.MEMORY_ONLY_SER_2).map(gson.toJson(_))
[error] /home/hduser/workspace/TweetStream/src/main/scala/TweetStream.scala:36: not found: value TwitterUtils
[error] val tweetStream = TwitterUtils.createStream(ssc, None, filters, StorageLevel.MEMORY_ONLY_SER_2).map(gson.toJson(_))
[error] ^
^
下面build.sbt是通过所有的依赖解析
name := "TweetStream"
version := "1.0"
scalaVersion := "2.11.7"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.5.2"
libraryDependencies += "org.apache.spark" %% "spark-streaming" % "1.5.2"
libraryDependencies += "org.apache.spark" % "spark-streaming_2.11" % "1.5.2"
libraryDependencies += "com.google.code.gson" % "gson" % "2.7"
libraryDependencies += "org.twitter4j" % "twitter4j-core" % "4.0.4"
我是不是添加错了依赖?
您需要添加以下依赖项:
// https://mvnrepository.com/artifact/org.apache.spark/spark-streaming-twitter_2.11
libraryDependencies += "org.apache.spark" % "spark-streaming-twitter_2.11" % "1.5.2"
PS: Scala 版本的其他依赖项可能会给您带来一些问题。您应该为其他 spark 依赖项指定 _2.11。
这是 build.sbt ...
lazy val root = (project in file(".")).
settings(
name := "TweetStream",
version := "1.0",
scalaVersion := "2.11.7",
mainClass in Compile := Some("TweetStream")
)
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "1.5.2",
"org.apache.spark" %% "spark-streaming" % "1.5.2",
"org.apache.spark" % "spark-streaming-twitter_2.11" % "1.5.2",
"com.google.code.gson" % "gson" % "2.7",
"org.twitter4j" % "twitter4j-core" % "3.0.3",
"org.twitter4j" % "twitter4j-stream" % "3.0.3"
)
// META-INF discarding
mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) =>
{
case PathList("META-INF", xs @ _*) => MergeStrategy.discard
case x => MergeStrategy.first
}
}
以及项目子文件夹中的assembly.sbt
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.3")