在AWS Glue作业中如何使用自定义Python库?
在Glue作业中复用自定义Python库(zip/egg包方式)
一、先把自定义库打包成zip包(推荐,比egg操作简单)
假设你的自定义库结构是这样的:
A/ __init__.py # 必须有这个文件,哪怕是空的,Python才会把A识别为可导入模块 B.py # 存放你要调用的自定义函数
进入A文件夹所在的上级目录,执行打包命令:
zip -r A.zip A/
执行后会生成一个包含整个A文件夹的A.zip包。如果一定要用egg包,需要借助setuptools编写setup.py再打包,步骤稍繁琐,zip包完全能满足需求。
二、把打包好的文件上传到S3
将A.zip上传到你的AWS S3存储桶,比如路径为s3://your-glue-resource-bucket/libs/A.zip,记好这个S3路径。
三、配置Glue作业引用该库
- 打开AWS Glue控制台,找到你要配置的Spark作业
- 进入作业编辑页面,找到作业参数区域:
- 添加参数键为
--extra-py-files,参数值填刚才的S3路径s3://your-glue-resource-bucket/libs/A.zip - 如果有多个自定义库,用逗号分隔多个S3路径即可
- 添加参数键为
- 保存作业配置。
四、在Glue脚本中调用自定义库
和你在SageMaker里的写法完全一致,直接导入使用:
from A import B # 调用B中的函数,比如 B.your_custom_function()
额外注意事项
- 确保自定义库的Python版本和Glue作业使用的版本兼容(比如Glue 4.0对应Python 3.10,打包时尽量用同版本避免依赖问题)
- 如果自定义库依赖第三方包,需要把依赖包也打包进去,或者在Glue作业的Python库路径中添加依赖包的S3路径
- 测试时可以先写简单脚本调用库中函数,快速排查导入报错问题
内容的提问来源于stack exchange,提问作者daniel lee
相关产品推荐
相关产品推荐

