build.sbt:如何添加 spark 依赖项
Posted
技术标签:
【中文标题】build.sbt:如何添加 spark 依赖项【英文标题】:build.sbt: how to add spark dependencies 【发布时间】:2016-10-23 19:30:14 【问题描述】:您好,我正在尝试在下面的 build.sbt 文件中下载 spark-core
、spark-streaming
、twitter4j
和 spark-streaming-twitter
:
name := "hello"
version := "1.0"
scalaVersion := "2.11.8"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.1"
libraryDependencies += "org.apache.spark" % "spark-streaming_2.10" % "1.4.1"
libraryDependencies ++= Seq(
"org.twitter4j" % "twitter4j-core" % "3.0.3",
"org.twitter4j" % "twitter4j-stream" % "3.0.3"
)
libraryDependencies += "org.apache.spark" % "spark-streaming-twitter_2.10" % "0.9.0-incubating"
我只是在网上使用了这个libraryDependencies
,所以我不确定要使用哪个版本等。
有人可以向我解释我应该如何修复这个 .sbt 文件。我花了几个小时试图弄清楚,但没有一个建议奏效。我通过自制软件安装了scala
,我的版本是2.11.8
我所有的错误都是关于:
Modules were resolved with conflicting cross-version suffixes.
【问题讨论】:
【参考方案1】:问题是您混合了 Scala 2.11 和 2.10 工件。你有:
scalaVersion := "2.11.8"
然后:
libraryDependencies += "org.apache.spark" % "spark-streaming_2.10" % "1.4.1"
需要2.10
工件的地方。您也在混合使用 Spark 版本,而不是使用一致的版本:
// spark 1.6.1
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.1"
// spark 1.4.1
libraryDependencies += "org.apache.spark" % "spark-streaming_2.10" % "1.4.1"
// spark 0.9.0-incubating
libraryDependencies += "org.apache.spark" % "spark-streaming-twitter_2.10" % "0.9.0-incubating"
这里有一个build.sbt
可以解决这两个问题:
name := "hello"
version := "1.0"
scalaVersion := "2.11.8"
val sparkVersion = "1.6.1"
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % sparkVersion,
"org.apache.spark" %% "spark-streaming" % sparkVersion,
"org.apache.spark" %% "spark-streaming-twitter" % sparkVersion
)
您也不需要手动添加 twitter4j
依赖项,因为它们是由 spark-streaming-twitter
传递添加的。
【讨论】:
非常感谢!一个简单的问题是 scala (2.11.8
) 的版本是否可以与所有版本为 1.6.1
的 spark 库一起使用?
是的。 Spark 1.6.1 包含 2.10 和 2.11 版本的 scala。
对此我还有一个问题。对于那个很抱歉!当我执行sbt run
时,似乎没有下载第三个依赖项"org.apache.spark" %% "spark-core" % sparkVersion
,因此在src/main/scala/example.scala
的scala 文件中,初始化我的spark 上下文时出现错误:16/06/21 21:18:14 ERROR SparkContext: Error initializing SparkContext. java.net.UnknownHostException: LM-SFA-11002982: LM-SFA-11002982: nodename nor servname provided, or not known
这个错误与是否下载依赖无关。您应该打开另一个问题来解决这个疑问。【参考方案2】:
它对我有用:
name := "spark_local"
version := "0.1"
scalaVersion := "2.11.8"
libraryDependencies ++= Seq(
"org.twitter4j" % "twitter4j-core" % "3.0.5",
"org.twitter4j" % "twitter4j-stream" % "3.0.5",
"org.apache.spark" %% "spark-core" % "2.0.0",
"org.apache.spark" %% "spark-sql" % "2.0.0",
"org.apache.spark" %% "spark-mllib" % "2.0.0",
"org.apache.spark" %% "spark-streaming" % "2.0.0"
)
【讨论】:
以上是关于build.sbt:如何添加 spark 依赖项的主要内容,如果未能解决你的问题,请参考以下文章
我可以在 build.sbt 中为 spark 3 和 scala 2.12 获取 neo4j 的命令(依赖项)吗?
Sbt Plugin 添加依赖到 project/build.sbt
将 Intellij 与 SBT 一起使用时如何更改提供的依赖项?
提取 Databricks 集群依赖项并将它们添加到 build.sbt 以在 Azure DevOps 中构建 jar