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

Python自动化部署EMR集群集成Apache Sedona 1.7.1失败求助

升级Apache Sedona至1.7.1时EMR自动化部署失败(手动部署正常)

问题概述

尝试将Apache Sedona版本升级到1.7.1,通过Python函数自动化部署EMR集群并执行任务步骤时持续失败,步骤运行约30秒后报错终止;但手动部署相同配置的集群时,所有操作完全正常,无任何报错。已严格遵循Sedona官方EMR配置文档操作,问题仍未解决。

环境信息

  • EMR版本:6.9.0(对应Hadoop 3.3.3、Spark 3.3.0),也尝试过其他匹配Spark版本的EMR发行版,问题未得到解决
  • 使用的Jar包:
    • postgresql-42.7.3.jar
    • geotools-wrapper-1.7.1-28.5.jar
    • sedona-spark-shaded-3.3_2.12-1.7.1.jar

已完成的配置操作

1. Jar包部署

通过sudo aws cp命令将上述Jar包从S3存储桶复制到集群节点的/usr/lib/spark/jars目录。

2. Bootstrap脚本配置

在Bootstrap脚本中添加了以下环境变量:

export PATH="/hadoop/local/bin:$PATH"

export SPARK_HOME=/usr/lib/spark

export PYTHONPATH=$SPARK_HOME/python:$PYTHONPATH

3. 依赖库安装(Bootstrap中执行)

手动部署时这些依赖可正常使用,暂不认为是冲突原因:

sudo python3 -m pip install pandas
sudo python3 -m pip install shapely
sudo python3 -m pip install geopandas
sudo python3 -m pip install keplergl==0.3.2
sudo python3 -m pip install pydeck==0.8.0
sudo python3 -m pip install attrs matplotlib descartes apache-sedona==1.7.1
sudo python3 -m pip install sqlalchemy==1.4.45
sudo python3 -m pip install psycopg2-binary
sudo python3 -m pip install requests==2.25.1
sudo python3 -m pip install pyarrow
sudo python3 -m pip install numpy
sudo python3 -m pip install dask
sudo python3 -m pip install h3
sudo python3 -m pip install boto3
sudo python3 -m pip install slackclient
sudo python3 -m pip install geoalchemy2
sudo python3 -m pip install dask-geopandas
sudo python3 -m pip install word2number
sudo python3 -m pip install wordtodigits
sudo python3 -m pip install numwords_to_nums
sudo python3 -m pip install h3-pyspark
sudo python3 -m pip install fsspec
sudo python3 -m pip install fuzzywuzzy
sudo python3 -m pip install levenshtein
sudo python3 -m pip install --upgrade certifi

4. 自动化部署的Spark提交步骤

通过Python函数构造的任务步骤配置:

step = {
        'Name': step_name,
        'ActionOnFailure': step_config['actiononfail'],
        'HadoopJarStep': {
            'Jar': 'command-runner.jar',
            'Args': [
                'spark-submit',
                '--deploy-mode', 'cluster',
                '--conf', 'spark.serializer=org.apache.spark.serializer.KryoSerializer',
                '--conf', 'spark.kryo.registrator=org.apache.sedona.core.serde.SedonaKryoRegistrator',
                step_config['stepscriptlocation']
            ]
        }
    }

5. 集群配置(spark-defaults分类)

自动化部署时使用的集群配置:

[
  {
    "Classification":"spark-defaults",
    "Properties":{
      "spark.yarn.dist.jars": "/usr/lib/spark/jars/sedona-spark-shaded-3.3_2.12-1.7.1.jar,/usr/lib/spark/jars/geotools-wrapper-1.7.1-28.5.jar",
      "spark.serializer": "org.apache.spark.serializer.KryoSerializer",
      "spark.kryo.registrator": "org.apache.sedona.core.serde.SedonaKryoRegistrator",
      "spark.sql.extensions": "org.apache.sedona.viz.sql.SedonaVizExtensions,org.apache.sedona.sql.SedonaSqlExtensions"
      }
  }
]

6. PySpark脚本中的Sedona初始化代码

任务脚本中初始化Sedona上下文的代码:

from sedona.spark import *

config = SedonaContext.builder() \
    .config('spark.jars.packages',
            'org.apache.sedona:sedona-spark-shaded-3.3_2.12:1.7.1,'
            'org.datasyslab:geotools-wrapper:1.7.1-28.5,'
            'org.postgresql:postgresql:42.7.3') \
    .getOrCreate()

# Create Sedona context
sedona = SedonaContext.create(config)

怀疑方向

目前认为问题与Jar包本身,或是自动化部署过程中Jar包传递到集群的方式有关,但无法定位具体原因,希望得到解决建议。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 16:22:01