尝试使用 sbt 导入 spark 时出错
Posted
技术标签:
【中文标题】尝试使用 sbt 导入 spark 时出错【英文标题】:error when trying to import spark with sbt 【发布时间】:2018-09-22 10:04:31 【问题描述】:我下载了播放框架项目 - 简单的一个。我正在尝试通过 sbt 导入 spark 2.2.0 版,但出现下一个错误:
sbt.librarymanagement.ResolveException: unresolved dependency: org.apache.spark#spark-core_2.12;2.2.0: not found
build.sbt 文件:
name := """play-scala-starter-example"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayScala)
resolvers += Resolver.sonatypeRepo("snapshots")
scalaVersion := "2.11.5"
libraryDependencies += guice
libraryDependencies += "org.scalatestplus.play" %% "scalatestplus-play" % "3.1.2" % Test
libraryDependencies += "com.h2database" % "h2" % "1.4.196"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.2.0"
build.sbt 文件中的所有行都被标记为红色并且有相同的错误:
expression type must conform to setting in sbt file
plugin.sbt 文件:
// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.13")
澄清一下,我有两个问题:
-
“表达式类型必须符合 build.sbt 文件中每一行的设置”。
无法通过 sbt 导入 spark 库
【问题讨论】:
v2.2.0 似乎仅适用于 spark-core_2.10 和 spark-core_2.11(not 2.12):mvnrepository.com/artifact/org.apache.spark/spark-core ^没错,Spark 还不支持 Scala 2.12 我没有看到任何适用于 scala 2.12 的 spark 版本,对吧?所以我应该使用不同的 scala 版本?你知道我遇到的第一个错误吗? 我将导入行更改为: libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.2.0" 现在它可以工作了。但是,当我尝试使用 scala 控制台打开我的 scala 文件之一时,它会打开 scala 控制台版本 2.12.4,这是为什么呢? @Mariel 您是否从您的项目根目录运行sbt console
?如果是这样,它将运行您在 build.sbt 中指定的 Scala 版本,即 2.12.4。你可能需要改变它。
【参考方案1】:
默认情况下,Spark 2.2.0 的构建和分发可与 Scala 2.11 一起使用。要在 Scala 中编写应用程序,您需要使用兼容的 Scala 版本(例如 2.11.X)。你的scala版本是2.12.X。这就是它抛出异常的原因。
【讨论】:
我将导入行更改为: libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.2.0" 现在它可以工作了。但是,当我尝试使用 scala 控制台打开我的 scala 文件之一时,它会打开 scala 控制台版本 2.12.4,这是为什么呢? 奇怪的行为不知道。以上是关于尝试使用 sbt 导入 spark 时出错的主要内容,如果未能解决你的问题,请参考以下文章
尝试使用 sbt 导入 dbcp2 和 postgres 库时出错 [重复]
sbt 在运行 Spark hello world 代码时出错?
sbt.librarymanagement.ResolveException:下载 org.apache.spark 时出错:spark-core:3.0.1