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

AWS Glue脚本添加外部Jar报错,Notebook却正常的问题咨询

关于AWS Glue脚本与Notebook加载外部Jar的配置差异问题

问题现象

  • Glue Notebook通过魔法命令可正常加载外部Jar(如Sedona),示例配置:
%idle_timeout 2880
%worker_type G.1X
%number_of_workers 10

%additional_python_modules apache-sedona==1.6.1,shapely,pyproj
%extra_jars https://repo1.maven.org/maven2/org/apache/sedona/sedona-spark-shaded-3.0_2.12/1.6.1/sedona-spark-shaded-3.0_2.12-1.6.1.jar 
  • 但Glue脚本作业在高级属性的extra-jars参数中传入相同HTTPS路径时,触发报错:

"LAUNCH ERROR | Error downloading from S3 for URL https://repo1.maven.org/maven2/org/apache/sedona/sedona-spark-shaded-3.0_2.12/1.6.1/sedona-spark-shaded-3.0_2.12-1.6.1.jar. Invalid S3 URI: hostname does not appear to be a valid S3 endpoint."

核心原因

这是AWS Glue的设计差异导致的:

  • Glue Notebook的%extra_jars魔法命令支持直接从公网Maven仓库加载Jar,底层运行环境允许访问公网并自动处理公网URL下载。
  • Glue脚本作业的extra-jars参数仅支持S3路径,启动流程会默认将传入的路径解析为S3 URI,因此公网HTTPS URL会被判定为无效S3端点。

解决办法

方法1:上传Jar到S3后引用

  1. 将Sedona Jar文件上传至你的AWS S3桶,例如路径:s3://your-glue-jars/sedona-spark-shaded-3.0_2.12-1.6.1.jar
  2. 在Glue作业的高级属性中,将extra-jars参数设置为上述S3路径
  3. 确保Glue作业关联的IAM角色拥有该S3桶的s3:GetObject权限

方法2:通过Python模块自动拉取

无需手动上传Jar,直接在Glue作业的--additional-python-modules参数中指定:

apache-sedona==1.6.1,shapely,pyproj

注意:需确保Glue作业的运行环境能访问公网(或配置VPC端点以访问Maven仓库),系统会自动拉取对应的依赖Jar。

验证说明

已在Glue Notebook中通过以下代码验证Sedona Jar可用:

import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from pyspark.sql import SQLContext
from awsglue.context import GlueContext
from awsglue.job import Job
from sedona.spark import *

sedona = SedonaContext.create(spark)
test = sedona.sql("SELECT ST_POINT(1., 2.) as geom").show()
print("ran sedona sql call, SUCCESS")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 13:26:20