首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么星火项目中的sbt程序集在“请通过提供sparkVersion和sparkComponents来添加任何火花依赖项”时失败?

为什么星火项目中的sbt程序集在“请通过提供sparkVersion和sparkComponents来添加任何火花依赖项”时失败?
EN

Stack Overflow用户
提问于 2016-12-03 18:27:32
回答 2查看 860关注 0票数 3

我在一个带有spark-cloudant依赖关系的sbt管理的Spark项目上工作。代码是 branch)

我在build.sbt中添加了下面一行

代码语言:javascript
复制
"cloudant-labs" % "spark-cloudant" % "1.6.4-s_2.10" % "provided"

因此,build.sbt看起来如下:

代码语言:javascript
复制
name := "Movie Rating"

version := "1.0"

scalaVersion := "2.10.5"

libraryDependencies ++= {
  val sparkVersion =  "1.6.0"
  Seq(
     "org.apache.spark" %% "spark-core" % sparkVersion % "provided",
     "org.apache.spark" %% "spark-sql" % sparkVersion % "provided",
     "org.apache.spark" %% "spark-streaming" % sparkVersion % "provided",
     "org.apache.spark" %% "spark-streaming-kafka" % sparkVersion % "provided",
     "org.apache.spark" %% "spark-mllib" % sparkVersion % "provided",
     "org.apache.kafka" % "kafka-log4j-appender" % "0.9.0.0",
     "org.apache.kafka" % "kafka-clients" % "0.9.0.0",
     "org.apache.kafka" %% "kafka" % "0.9.0.0",
     "cloudant-labs" % "spark-cloudant" % "1.6.4-s_2.10" % "provided"
    )
}

assemblyMergeStrategy in assembly := {
  case PathList("org", "apache", "spark", xs @ _*) => MergeStrategy.first
  case PathList("scala", xs @ _*) => MergeStrategy.discard
  case PathList("META-INF", "maven", "org.slf4j", xs @ _* ) => MergeStrategy.first
  case x =>
    val oldStrategy = (assemblyMergeStrategy in assembly).value
    oldStrategy(x)
}

unmanagedBase <<= baseDirectory { base => base / "lib" }

assemblyOption in assembly := (assemblyOption in assembly).value.copy(includeScala = false)

当我执行sbt assembly时,我会得到以下错误:

代码语言:javascript
复制
java.lang.RuntimeException: Please add any Spark dependencies by 
   supplying the sparkVersion and sparkComponents. Please remove: 
   org.apache.spark:spark-core:1.6.0:provided
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-06 09:02:00

注意到我仍然不能重现这个问题,但我认为这并不重要。

java.lang.RuntimeException:请通过提供sparkVersion和sparkComponents来添加任何火花依赖项。

在您的示例中,您的build.sbt缺少一个sbt解析器来查找spark-cloudant依赖项。您应该在build.sbt中添加以下行

代码语言:javascript
复制
resolvers += "spark-packages" at "https://dl.bintray.com/spark-packages/maven/"

PROTIP我强烈建议您首先使用spark-shell,并且只在您满意将包切换到sbt (特别是sbt)时才使用。如果您对sbt以及其他库/依赖关系也不熟悉)。一口就消化太多了。跟着https://spark-packages.org/package/cloudant-labs/spark-cloudant走。

票数 1
EN

Stack Overflow用户

发布于 2016-12-03 18:35:15

可能相关:https://github.com/databricks/spark-csv/issues/150

您能尝试将spIgnoreProvided := true添加到build.sbt中吗?

(这可能不是答案,我本可以发表评论,但我没有足够的声誉)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40951106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档