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

如何在本地Docker容器的Glue作业中使用额外Python模块?

解决本地Docker Glue环境中awswrangler模块找不到的问题

问题原因

本地直接使用spark-submit命令无法识别Glue特有的--additional-python-modules参数(该参数由Glue服务端处理),同时EXTRA_PYTHON_LIBS环境变量需要配合Glue官方镜像提供的封装命令才能生效。

解决方案

方案一:使用Glue封装的gluesparksubmit命令替换spark-submit

官方镜像提供的gluesparksubmit会处理Glue专属参数,自动安装额外Python库,修改后的运行命令如下:

docker run -it -v ~/.aws:/home/glue_user/.aws \
    -v $WORKSPACE_LOCATION:/home/glue_user/workspace/ \
    -e AWS_REGION=$REGION \
    -e AWS_ACCESS_KEY_ID="$ACCESS_KEY" \
    -e AWS_SECRET_ACCESS_KEY="$SECRET_KEY" \
    -e AWS_SESSION_TOKEN="$SESSION_TOKEN" \
    -e PYTHONPATH="/home/glue_user/workspace/src" \
    -e EXTRA_PYTHON_LIBS="awswrangler==3.11.0" \
    -e DISABLE_SSL=true \
    -e SPARK_PRINT_LAUNCH_COMMAND=true \
    -e LOG_LEVEL=DEBUG \
    --rm -p 4040:4040 -p 18080:18080 --name glue_spark_submit \
amazon/aws-glue-libs:glue_libs_4.0.0_image_01 \
gluesparksubmit /home/glue_user/workspace/$GLUE_JOB_PATH \
    --JOB_NAME "test-job" \
    --stage "beta" \
    --additional-python-modules "awswrangler==3.11.0"

方案二:启动容器时先安装awswrangler再运行脚本

通过bash -c先执行pip安装依赖,再运行spark-submit:

docker run -it -v ~/.aws:/home/glue_user/.aws \
    -v $WORKSPACE_LOCATION:/home/glue_user/workspace/ \
    -e AWS_REGION=$REGION \
    -e AWS_ACCESS_KEY_ID="$ACCESS_KEY" \
    -e AWS_SECRET_ACCESS_KEY="$SECRET_KEY" \
    -e AWS_SESSION_TOKEN="$SESSION_TOKEN" \
    -e PYTHONPATH="/home/glue_user/workspace/src" \
    -e DISABLE_SSL=true \
    -e SPARK_PRINT_LAUNCH_COMMAND=true \
    -e LOG_LEVEL=DEBUG \
    --rm -p 4040:4040 -p 18080:18080 --name glue_spark_submit \
amazon/aws-glue-libs:glue_libs_4.0.0_image_01 \
bash -c "pip install awswrangler==3.11.0 && spark-submit /home/glue_user/workspace/$GLUE_JOB_PATH \
    --JOB_NAME 'test-job' \
    --stage 'beta'"

方案三:构建预安装awswrangler的自定义镜像

如果频繁使用该依赖,可基于官方镜像构建自定义镜像:

  1. 创建Dockerfile:
FROM amazon/aws-glue-libs:glue_libs_4.0.0_image_01
USER root
RUN pip install awswrangler==3.11.0
USER glue_user
  1. 构建镜像:
docker build -t custom-glue-libs:4.0-awswrangler .
  1. 使用自定义镜像运行脚本:
docker run -it -v ~/.aws:/home/glue_user/.aws \
    -v $WORKSPACE_LOCATION:/home/glue_user/workspace/ \
    -e AWS_REGION=$REGION \
    -e AWS_ACCESS_KEY_ID="$ACCESS_KEY" \
    -e AWS_SECRET_ACCESS_KEY="$SECRET_KEY" \
    -e AWS_SESSION_TOKEN="$SESSION_TOKEN" \
    -e PYTHONPATH="/home/glue_user/workspace/src" \
    -e DISABLE_SSL=true \
    -e SPARK_PRINT_LAUNCH_COMMAND=true \
    -e LOG_LEVEL=DEBUG \
    --rm -p 4040:4040 -p 18080:18080 --name glue_spark_submit \
custom-glue-libs:4.0-awswrangler \
spark-submit /home/glue_user/workspace/$GLUE_JOB_PATH \
    --JOB_NAME "test-job" \
    --stage "beta"

注意事项

  • Glue 4.0对应Python 3.9,确保安装的awswrangler版本(如3.11.0)兼容该Python版本。
  • 使用gluesparksubmit时,建议在--additional-python-modules中指定具体版本,避免版本冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 00:15:55