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

如何在AWS EMR中通过spark-submit运行ECR内Docker镜像中的PySpark程序

可行性说明

你的思路完全正确,AWS EMR 5.30及以上版本、6.x全版本均原生支持Docker容器运行时,可直接通过spark-submit调用ECR内的自定义镜像运行PySpark作业。


前置准备

  • 确认EMR集群版本符合要求,且集群所在区域与ECR镜像存储区域一致
  • 给EMR集群关联的EC2实例角色(默认角色为EMR_EC2_DefaultRole)添加AmazonEC2ContainerRegistryReadOnly权限策略,保证集群节点有权限拉取ECR私有镜像

完整spark-submit执行命令

spark-submit \
--master yarn \
--deploy-mode cluster \
--conf spark.executorEnv.YARN_CONTAINER_RUNTIME_TYPE=docker \
--conf spark.executorEnv.YARN_CONTAINER_RUNTIME_DOCKER_IMAGE=123456789123.dkr.ecr.us-east-1.amazonaws.com/你的镜像名:latest \
--conf spark.yarn.appMasterEnv.YARN_CONTAINER_RUNTIME_TYPE=docker \
--conf spark.yarn.appMasterEnv.YARN_CONTAINER_RUNTIME_DOCKER_IMAGE=123456789123.dkr.ecr.us-east-1.amazonaws.com/你的镜像名:latest \
--conf spark.executorEnv.PYSPARK_PYTHON=python3 \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=python3 \
local:///app/app.py

关键参数说明:

  • 镜像地址需替换为你实际的ECR镜像地址+版本标签
  • 末尾的local:///app/app.py前缀local://表示读取Docker容器内部的文件路径,对应你Dockerfile中WORKDIR下的app.py

注意事项

  • 优先使用--deploy-mode cluster提交作业,该模式下Driver和Executor都会加载你定义的ECR镜像,依赖环境完全一致;如果用client模式,Driver会运行在作业提交节点本地,不会使用容器镜像
  • 若镜像内有自定义的Python路径或者依赖配置,可通过spark.executorEnv和spark.yarn.appMasterEnv前缀添加对应的环境变量

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:57:03