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

Apache Sedona本地Python脚本运行失败,容器内正常问题排查

问题描述

我在apache/sedona:latest Docker容器的Jupyter Notebook中测试Sedona代码一切正常,但在本地以Python脚本运行时,代码在getOrCreate()方法处报错。

本地环境配置:

  • 通过pip安装了pyspark==3.4.1、apache-sedona[spark]==1.6.1
  • 转发了4040、4041、8080、8081、8888端口
  • Python版本3.12

容器环境配置:

  • Python版本3.10
  • Spark 3.4.1、JDK 19,未安装Scala

本地启动脚本代码如下:

from sedona.spark import *
from sedona.sql import ST_GeoHash, ST_MakeValid
import time

start_time = time.time()

config = (
    SedonaContext.builder()
    .config(
        "spark.jars.packages",
        "org.apache.sedona:sedona-spark-3.0_2.12:1.6.1,", "org.datasyslab:geotools-wrapper:1.6.1-28.2",
    )
    .config("spark.jars.repositories", "https://artifacts.unidata.ucar.edu/repository/unidata-all")
    .getOrCreate()
)
sedona = SedonaContext.create(config)
可能的问题点及解决方法

1. Spark依赖包配置语法错误

你的代码中spark.jars.packages的配置存在参数传递错误:

  • 错误地将两个依赖包拆分成了config方法的两个独立参数,而config每次只能接收一个键值对
  • 第一个依赖包字符串末尾多了一个多余的逗号

修正方法:将两个依赖包合并为一个字符串,用逗号分隔,作为spark.jars.packages的唯一值:

config = (
    SedonaContext.builder()
    .config(
        "spark.jars.packages",
        "org.apache.sedona:sedona-spark-3.0_2.12:1.6.1,org.datasyslab:geotools-wrapper:1.6.1-28.2"
    )
    .config("spark.jars.repositories", "https://artifacts.unidata.ucar.edu/repository/unidata-all")
    .getOrCreate()
)

2. Python版本兼容性问题

Spark 3.4.1官方支持的Python版本范围是3.7至3.11,而你本地使用的Python 3.12不在支持列表内,可能会导致底层交互逻辑出错、依赖库兼容性问题。

解决方法:将本地Python版本降级到3.10或3.11,与容器环境保持一致。

3. JDK版本不匹配

容器使用JDK 19,若本地JDK版本与容器差异较大(例如使用JDK 8或JDK 21),可能会触发Sedona或Spark的运行时兼容性问题。

解决方法:检查本地JDK版本,尽量与容器的JDK 19保持一致;若无法更换JDK,确认Sedona 1.6.1是否兼容当前本地JDK版本。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:33:10