IntelliJ中Scala+Spark项目突发依赖解析错误的原因与解决
Spark依赖解析偶发错误的原因与解决方法
问题场景
使用IntelliJ开发基于Spark的Scala项目,多数时候运行正常,但偶尔启动IntelliJ会出现依赖解析错误,错误日志如下:
[warn] Note: Unresolved dependencies path: [error] stack trace is suppressed; run 'last update' for the full output [error] stack trace is suppressed; run 'last ssExtractDependencies' for the full output [error] (update) sbt.librarymanagement.ResolveException: Error downloading org.apache.spark:spark-core_2.12:3.0.0-preview2 [error] Not found [error] Not found [error] not found: C:\...\.ivy2\localorg.apache.spark\spark-core_2.12\3.0.0-preview2\ivys\ivy.xml [error] checksum format error: C:\....\AppData\Local\Coursier\Cache\v1\https\repo1.maven.org\maven2\org\apache\spark\spark-core_2.12\3.0.0-preview2\.spark-core_2.12-3.0.0-preview2.pom__sha1 [error] checksum format error: C:\....\AppData\Local\Coursier\Cache\v1\https\repo1.maven.org\maven2\org\apache\spark\spark-core_2.12\3.0.0-preview2\.spark-core_2.12-3.0.0-preview2.pom__sha1 [error] Error downloading org.apache.spark:spark-sql_2.12:3.0.0-preview2 [error] Not found [error] Not found [error] not found: C:\...\.ivy2\localorg.apache.spark\spark-sql_2.12\3.0.0-preview2\ivys\ivy.xml [error] checksum format error: C:\....\AppData\Local\Coursier\Cache\v1\https\repo1.maven.org\maven2\org\apache\spark\spark-sql_2.12\3.0.0-preview2\.spark-sql_2.12-3.0.0-preview2.pom__sha1 [error] (ssExtractDependencies) sbt.librarymanagement.ResolveException: Error downloading org.apache.spark:spark-core_2.12:3.0.0-preview2 [error] Not found [error] Not found [error] not found: C:\...\.ivy2\localorg.apache.spark\spark-core_2.12\3.0.0-preview2\ivys\ivy.xml [error] checksum format error: C:\....\AppData\Local\Coursier\Cache\v1\https\repo1.maven.org\maven2\org\apache\spark\spark-core_2.12\3.0.0-preview2\.spark-core_2.12-3.0.0-preview2.pom__sha1 [error] Error downloading org.apache.spark:spark-sql_2.12:3.0.0-preview2 [error] Not found [error] Not found [error] not found: C:\...\.ivy2\localorg.apache.spark\spark-sql_2.12\3.0.0-preview2\ivys\ivy.xml [error] checksum format error: C:\....\AppData\Local\Coursier\Cache\v1\https\repo1.maven.org\maven2\org\apache\spark\spark-sql_2.12\3.0.0-preview2\.spark-sql_2.12-3.0.0-preview2.pom__sha1 [error] Total time: 1 s, completed 17 Sep 2022, 15:13:49 [info] shutting down sbt server
项目build.sbt配置:
/*ThisBuild / version := "0.1.0-SNAPSHOT" ThisBuild / scalaVersion := "2.13.8" lazy val root = (project in file(".")) .settings( name := "spark-learning" )*/ // Name of the package name := "spark-learning" // Version of our package version := "1.0" // Version of Scala scalaVersion := "2.12.14" // Spark library dependencies libraryDependencies ++= Seq( "org.apache.spark" %% "spark-core" % "3.0.0-preview2", "org.apache.spark" %% "spark-sql" % "3.0.0-preview2" )
问题原因
- 缓存文件损坏:错误日志中的
*checksum format error*是核心线索,说明Coursier(sbt默认依赖下载工具)的本地缓存文件不完整或损坏。通常是之前的依赖下载过程被意外中断(比如强制关闭IntelliJ、网络断连、系统断电),导致缓存的校验文件格式异常,无法通过校验。 - 预览版依赖不稳定:你使用的Spark版本是
3.0.0-preview2,属于预览版本,这类版本在Maven仓库中的存储可能存在不确定性,比如远程仓库的校验信息后续发生变更,导致本地缓存的校验值与远程不匹配。
解决方法
方法一:清理本地依赖缓存
- 找到Coursier缓存路径
C:\Users\<你的用户名>\AppData\Local\Coursier\Cache,删除v1\https\repo1.maven.org\maven2\org\apache\spark\下spark-core_2.12和spark-sql_2.12对应的3.0.0-preview2文件夹,也可以直接清空整个Coursier缓存目录。 - 删除Ivy2本地缓存中对应的Spark依赖路径:
C:\Users\<你的用户名>\.ivy2\local\org.apache.spark\下的相关文件夹。 - 打开IntelliJ,点击右侧sbt面板的
Reload All sbt Projects按钮,或者在项目根目录执行命令sbt clean update,重新下载依赖。
方法二:更换稳定版Spark依赖
预览版本身存在不确定性,建议替换为正式发布的稳定版本,比如修改build.sbt中的Spark版本为3.0.1(3.0系列首个稳定版):
libraryDependencies ++= Seq( "org.apache.spark" %% "spark-core" % "3.0.1", "org.apache.spark" %% "spark-sql" % "3.0.1" )
修改后重新加载sbt项目,即可避免预览版带来的依赖不稳定问题。
方法三:强制更新校验信息
在IntelliJ的sbt面板中执行update clean命令,或者在命令行执行sbt update --refresh-options,强制sbt重新拉取远程依赖的校验信息,覆盖本地损坏的缓存。
内容的提问来源于stack exchange,提问作者Mandroid
相关产品推荐
相关产品推荐

