You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala 2.12+Spark3集成Sedona报错:GeotiffFileFormat无法实例化

解决思路

问题根源

你的build.sbt中混合了Spark 2.4/Scala 2.11和Spark 3.0/Scala 2.12版本的Sedona依赖,版本不匹配直接触发类加载失败:

  • sedona-python-adapter-2.4_2.11和sedona-viz-2.4_2.11是针对Spark 2.4、Scala 2.11编译的,依赖Spark 2.x特有的org.apache.spark.sql.execution.datasources.FileFormat$class抽象类
  • 而Spark 3.x中该类的实现结构已变更,导致运行时找不到对应类,抛出NoClassDefFoundError

修复步骤

1. 统一所有Sedona依赖的版本匹配

修改build.sbt,移除Spark 2.4/Scala 2.11的依赖,替换为适配Spark 3.0、Scala 2.12的版本:

ThisBuild / scalaVersion := "2.12.12"

libraryDependencies ++= Seq(
  "org.apache.spark" % "spark-core_2.12" % "3.0.1",
  "org.apache.spark" % "spark-sql_2.12" % "3.0.1",
  // 替换为Spark3.0、Scala2.12对应的Sedona组件
  "org.apache.sedona" % "sedona-core-3.0_2.12" % "1.2.1-incubating",
  "org.apache.sedona" % "sedona-sql-3.0_2.12" % "1.2.1-incubating",
  // 如果需要Python适配器和可视化组件,使用对应版本
  "org.apache.sedona" % "sedona-python-adapter-3.0_2.12" % "1.2.1-incubating",
  "org.apache.sedona" % "sedona-viz-3.0_2.12" % "1.2.1-incubating"
)

注意:所有Sedona依赖的命名规则为sedona-组件名-Spark版本_Scala版本,必须与你的Spark、Scala版本完全对齐。

2. 清理构建缓存并重新编译

执行以下命令清理旧依赖缓存,避免残留冲突:

sbt clean
sbt compile

3. 验证依赖一致性

运行sbt dependencyTree检查所有依赖的Spark版本是否统一,确保没有混入Spark 2.x的依赖。

内容的提问来源于stack exchange,提问作者IcePack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:35:28