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

使用GeoSpark(Apache Sedona)读CSV多边形数据报NoClassDefFoundError错误

错误原因分析

该报错核心为GeoSpark版本与本地Spark/Scala版本不兼容:
你当前引入的geospark-sql_2.3:1.3.1是针对Spark 2.3、Scala 2.11编译的版本,如果你的本地环境满足以下任一情况都会触发类找不到错误:

  • 本地Spark版本为2.4+:Spark 2.4开始调整了CodegenFallback类的实现路径,移除了原有的$class后缀实现类
  • 本地Spark使用的Scala版本为2.12+:Scala 2.12调整了trait的编译规则,旧版本编译的GeoSpark无法加载对应接口实现
解决方案

方案1:升级为Apache Sedona适配高版本Spark(推荐)

GeoSpark已经捐献给Apache软件基金会,更名为Apache Sedona,原生支持Spark 2.4到3.x全版本,适配性更好。修改依赖和注册逻辑即可:

from pyspark.sql import SparkSession
from sedona.register import SedonaRegistrator

# Spark 3.0+ 对应依赖示例
spark = SparkSession.builder.master("local") \
    .config("spark.jars.packages","org.apache.sedona:sedona-python-adapter-3.0_2.12:1.4.1") \
     .getOrCreate()

SedonaRegistrator.registerAll(spark)

# 后续读取CSV、调用st_geomFromWKT的逻辑无需修改
df = spark.read.csv(path="D:\\Arshad\\data\\test.csv", header=True)
df.createOrReplaceTempView("geotbl")
df2 = spark.sql("select country, st_geomFromWKT(polygon) as geometry from geotbl")

方案2:匹配当前GeoSpark版本的依赖

如果要保留现有GeoSpark 1.3.1的代码,做以下任一调整即可:

  • 若本地Spark版本为2.4.x,将依赖中的geospark-sql_2.3:1.3.1修改为geospark-sql_2.4:1.3.1
  • 若不想修改依赖,将本地PySpark版本回退到2.3.x:
pip install pyspark==2.3.4

内容的提问来源于stack exchange,提问作者Mohd Tajuddin Arshad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:57:05