【问题标题】:`sbt run` results in an error when compiling after adding dependencies`sbt run` 添加依赖后编译时出错
【发布时间】:2021-11-11 04:19:45
【问题描述】:

我在 built.sbt 中添加了以下依赖项,在终端中运行 sbt run 后,出现以下错误:

$ sbt run
[info] welcome to sbt 1.5.5 (Private Build Java 1.8.0_292)
[info] loading global plugins from /home/hayat/.sbt/1.0/plugins
[info] loading project definition from /home/hayat/myproject/project
[info] loading settings for project root from build.sbt ...
[info] set current project to scala3-simple (in build file:/home/hayat/myproject/)
[info] Updating 
[info] Resolved  dependencies
[warn] 
[warn]  Note: Unresolved dependencies path:
[error] sbt.librarymanagement.ResolveException: Error downloading org.apache.spark:spark-streaming:3.1.2
[error]   Not found
[error]   Not found
[error]   not found: /home/hayat/.ivy2/localorg.apache.spark/spark-streaming/3.1.2/ivys/ivy.xml
[error]   not found: https://repo1.maven.org/maven2/org/apache/spark/spark-streaming/3.1.2/spark-streaming-3.1.2.pom
[error]     at lmcoursier.CoursierDependencyResolution.unresolvedWarningOrThrow(CoursierDependencyResolution.scala:258)
[error]     at lmcoursier.CoursierDependencyResolution.$anonfun$update$38(CoursierDependencyResolution.scala:227)
[error]     at scala.util.Either$LeftProjection.map(Either.scala:573)
[error]     at lmcoursier.CoursierDependencyResolution.update(CoursierDependencyResolution.scala:227)
[error]     at sbt.librarymanagement.DependencyResolution.update(DependencyResolution.scala:60)
[error]     at sbt.internal.LibraryManagement$.resolve$1(LibraryManagement.scala:59)
[error]     at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$12(LibraryManagement.scala:133)
[error]     at sbt.util.Tracked$.$anonfun$lastOutput$1(Tracked.scala:73)
[error]     at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$20(LibraryManagement.scala:146)
[error]     at scala.util.control.Exception$Catch.apply(Exception.scala:228)
[error]     at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11(LibraryManagement.scala:146)
[error]     at sbt.internal.LibraryManagement$.$anonfun$cachedUpdate$11$adapted(LibraryManagement.scala:127)
[error]     at sbt.util.Tracked$.$anonfun$inputChangedW$1(Tracked.scala:219)
[error]     at sbt.internal.LibraryManagement$.cachedUpdate(LibraryManagement.scala:160)
[error]     at sbt.Classpaths$.$anonfun$updateTask0$1(Defaults.scala:3678)
[error]     at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error]     at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error]     at sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error]     at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error]     at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error]     at sbt.Execute.work(Execute.scala:291)
[error]     at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error]     at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error]     at sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error]     at java.lang.Thread.run(Thread.java:748)
[error] (update) sbt.librarymanagement.ResolveException: Error downloading org.apache.spark:spark-streaming:3.1.2
[error]   Not found
[error]   Not found
[error]   not found: /home/hayat/.ivy2/localorg.apache.spark/spark-streaming/3.1.2/ivys/ivy.xml
[error]   not found: https://repo1.maven.org/maven2/org/apache/spark/spark-streaming/3.1.2/spark-streaming-3.1.2.pom
[error] Total time: 7 s, completed Sep 16, 2021 11:21:30 AM

这里是 built.sbt

val scala3Version = "3.0.2"

lazy val root = project
  .in(file("."))
  .settings(
    name := "scala3-simple",
    version := "0.1.0",

    scalaVersion := scala3Version,

    libraryDependencies += "com.novocode" % "junit-interface" % "0.11" % "test",
    libraryDependencies += "org.apache.spark" % "spark-streaming" % "3.1.2",
    libraryDependencies += "org.apache.spark" % "spark-core" % "3.1.2"
  )
  • Scala 版本:3.0.2
  • Sbt 版本:1.5.5

【问题讨论】:

  • 有关信息,spark-streaming 依赖于 spark-core,因此如果您已经拥有 spark-streaming,则无需在依赖项列表中添加 spark-core。但是,您可能需要 spark-sql 库,因为它包含使用 Spark 的最常用 API。
  • 我尝试添加的任何依赖项,都会出现这样的错误
  • Spark 尚不兼容/不适用于 Scala 3。
  • @Gael J 我应该换成 scala 2

标签: scala apache-spark ubuntu sbt


【解决方案1】:

spark-streamingspark-core 不存在,它是 spark-streaming_2.12spark-core_2.12,其中 2.12 是 Scala 版本。目前没有spark-streaming_3.0spark-core_3.0 库。

所以要解决您的问题,您需要:

  • 将您的 scala 版本从 3.0.2 降级为 2.12.x(最新的当前版本,2.12.15),因为没有适用于 Scala 3 的 Spark 版本
  • 使用spark-streaming_2.12 库而不是spark-streaming
  • 使用spark-core_2.12 库而不是spark-core

要使用_2.12 版本的库,您可以将_2.12 添加到您的库名称中:

libraryDependencies += "org.apache.spark" % "spark-streaming_2.12" % "3.1.2",
libraryDependencies += "org.apache.spark" % "spark-core_2.12" % "3.1.2"

或者,更好的是,在组和库名称之间使用%% 自动将 scala 版本添加到库名称:

libraryDependencies += "org.apache.spark" %% "spark-streaming" % "3.1.2",
libraryDependencies += "org.apache.spark" %% "spark-core" % "3.1.2"

所以你的build.sbt 应该变成:

val scala2Version = "2.12.15"

lazy val root = project
  .in(file("."))
  .settings(
    name := "scala2-simple",
    version := "0.1.0",

    scalaVersion := scala2Version,

    libraryDependencies += "com.novocode" % "junit-interface" % "0.11" % "test",
    libraryDependencies += "org.apache.spark" %% "spark-streaming" % "3.1.2",
    libraryDependencies += "org.apache.spark" %% "spark-core" % "3.1.2"
  )

【讨论】:

  • 但是我已经在 Windows 的 IntelliJ 中添加了这个依赖项,它工作正常
  • 你是如何在 IntelliJ 中添加依赖的?您是否直接从 maven 存储库 (repo1.maven.org/maven2/org/apache/spark/spark-streaming_2.12/…) 下载了 jar 文件并将其添加到您的项目中?
  • 在 Scala 3 项目中使用 Scala 2.12 版本的 Spark 将不起作用。我建议您删除这部分答案@Vincent
  • @Vincent Doba 我添加的和上面一样。
  • @GaëlJ 我澄清了这一点。在我回答的最后,Mustafa 应该使用 scala 2.12,但似乎还不够清楚
猜你喜欢
  • 2014-02-26
  • 2018-03-09
  • 2015-01-24
  • 2016-04-05
  • 2019-08-23
  • 2016-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多