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

新手求助:如何通过AWS EMR Serverless控制台提交多文件PySpark作业

解决EMR Serverless提交多文件PySpark项目的步骤

1. 打包项目依赖文件

将PySpark项目中所有依赖的.py文件(包含目录结构)打包成zip格式。比如你有main.py主文件,以及utils/helper.py、common/config.py这类依赖文件,直接把整个项目目录(除虚拟环境、无关文件外)打包为spark-project-deps.zip,确保解压后能保留原有的目录层级,这样主文件才能正确导入模块。

2. 上传文件到S3

将主文件(如main.py)和打包好的依赖包(spark-project-deps.zip)上传到同一个S3存储桶的指定路径,例如:

  • 主文件路径:s3://your-bucket/emr-jobs/main.py
  • 依赖包路径:s3://your-bucket/emr-jobs/deps/spark-project-deps.zip

3. 控制台提交作业配置

在EMR Serverless控制台提交作业时,按以下配置:

  • 主Python文件:填写主文件的S3路径(s3://your-bucket/emr-jobs/main.py)
  • 依赖项:点击「添加依赖」,选择「上传的文件」,填入依赖包的S3路径(s3://your-bucket/emr-jobs/deps/spark-project-deps.zip)。EMR Serverless会自动解压该包到作业运行环境,保证主文件能导入依赖模块。

4. 可选:用AWS CLI提交(更灵活)

如果习惯用命令行,可执行以下命令提交作业,通过--py-files指定依赖包:

aws emr-serverless start-job-run \
    --application-id <你的EMR Serverless应用ID> \
    --execution-role-arn <你的执行角色ARN> \
    --job-driver '{
        "sparkSubmit": {
            "entryPoint": "s3://your-bucket/emr-jobs/main.py",
            "entryPointArguments": [],
            "sparkSubmitParameters": "--py-files s3://your-bucket/emr-jobs/deps/spark-project-deps.zip"
        }
    }'

注意事项

  • 确保EMR Serverless执行角色拥有对应S3路径的s3:GetObject权限
  • 若项目依赖第三方库(如pandas、requests),需将这些库打包成wheel包加入依赖zip,或在sparkSubmitParameters中用--packages指定Maven坐标安装
  • 打包时避免包含虚拟环境、日志等无关文件,减少包体积

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:43:17