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

Apache Sedona版本兼容异常:PySpark环境空间操作报错求助

问题

环境配置:

  • Apache Sedona 1.5.1
  • PySpark 3.2.1
  • Scala 2.12.18

已通过Maven安装相关依赖包,参考官方示例添加Python Adapter后运行以下代码:

from sedona.spark import *

spark = SedonaContext.builder().\
    config('spark.jars.packages',
           'org.apache.sedona:sedona-spark-3.4_2.12:1.5.1,'
           'org.datasyslab:geotools-wrapper:1.5.1-28.2,'
           'uk.co.gresearch.spark:spark-extension_2.12:2.11.0-3.4,'
           'org.apache.sedona:sedona-python-adapter-3.0_2.12:1.4.1'). \
    config('spark.jars.repositories', 'https://artifacts.unidata.ucar.edu/repository/unidata-all'). \
    getOrCreate()

sedona = SedonaContext.create(spark)

执行空间操作时出现如下错误:

Py4JJavaError: An error occurred while calling o206.showString.
: java.lang.NoSuchMethodError: 'double org.locationtech.jts.geom.Coordinate.getZ()'
    at org.apache.sedona.common.geometrySerde.GeometrySerializer.getCoordinateType(GeometrySerializer.java:449)
    at org.apache.sedona.common.geometrySerde.GeometrySerializer.serializePoint(GeometrySerializer.java:112)
    at org.apache.sedona.common.geometrySerde.GeometrySerializer.serialize(GeometrySerializer.java:43)
    at org.apache.sedona.sql.utils.GeometrySerializer$.serialize(GeometrySerializer.scala:36)
    at org.apache.spark.sql.sedona_sql.expressions.implicits$GeometryEnhancer.toGenericArrayData(implicits.scala:139)
    at org.apache.spark.sql.sedona_sql.expressions.InferredTypes$.$anonfun$buildSerializer$1(InferredExpression.scala:155)
    at org.apache.spark.sql.sedona_sql.expressions.InferredExpression.eval(InferredExpression.scala:71)
    at org.apache.spark.sql.catalyst.expressions.UnaryExpression.eval(Expression.scala:477)
    at org.apache.spark.sql.catalyst.optimizer.ConstantFolding$$anonfun$apply$1$$anonfun$applyOrElse$1.applyOrElse(expressions.scala:69)

目前可加载普通DataFrame,但无法执行空间操作,请问问题原因是什么?


原因分析与解决办法

核心问题:多组件版本不匹配

  1. Sedona Spark组件与PySpark版本错配:你使用的sedona-spark-3.4_2.12:1.5.1是为PySpark 3.4.x适配的版本,但你的环境是PySpark 3.2.1,必须选择对应PySpark 3.2的Sedona核心包。
  2. Python Adapter与Sedona主版本不一致:核心包用了Sedona 1.5.1,但Python Adapter是1.4.1,两者版本必须完全对齐,否则会出现API调用不兼容。
  3. Spark Extension版本与PySpark版本不兼容:spark-extension_2.12:2.11.0-3.4是适配PySpark 3.4的版本,需要替换为对应PySpark 3.2的分支版本。

修正后的依赖配置

将spark.jars.packages替换为以下内容,确保所有组件版本与你的PySpark 3.2.1完全匹配:

from sedona.spark import *

spark = SedonaContext.builder().\
    config('spark.jars.packages',
           'org.apache.sedona:sedona-spark-3.2_2.12:1.5.1,'
           'org.datasyslab:geotools-wrapper:1.5.1-28.2,'
           'uk.co.gresearch.spark:spark-extension_2.12:2.7.0-3.2,'
           'org.apache.sedona:sedona-python-adapter-3.2_2.12:1.5.1'). \
    config('spark.jars.repositories', 'https://artifacts.unidata.ucar.edu/repository/unidata-all'). \
    getOrCreate()

sedona = SedonaContext.create(spark)

补充说明

  • Sedona命名规则为sedona-spark-[PySpark版本]_Scala版本:Sedona版本,必须严格对应本地PySpark和Scala版本。
  • 所有Sedona相关组件(核心包、Python Adapter)的版本号必须完全一致,避免跨版本API差异。
  • Spark Extension版本格式为spark-extension_Scala版本:Extension版本-PySpark版本,需选择与PySpark版本匹配的分支。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:37:50