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

如何在EMR Serverless控制台提交Spark作业时传递JAR包与依赖包?

在EMR Serverless中提交Spark作业传递依赖包的方法

和传统spark-submit的--jars参数对应,EMR Serverless提供了几种实用方式来指定作业依赖的JAR包,具体操作如下:

1. 通过作业提交参数直接指定

你可以在提交EMR Serverless Spark作业时,用--conf参数设置spark.jars配置项,效果和spark-submit的--jars完全一致。注意:依赖JAR必须存放在EMR Serverless可访问的存储位置(比如AWS S3),不能使用本地路径。示例命令如下:

aws emr-serverless start-job-run \
  --application-id <你的应用ID> \
  --execution-role-arn <你的执行角色ARN> \
  --job-driver '{
      "sparkSubmit": {
          "entryPoint": "s3://你的存储路径/主程序.jar",
          "entryPointArguments": [],
          "sparkSubmitParameters": "--conf spark.jars=s3://你的依赖路径/hudi-spark3.3-bundle_2.12-0.11.1-amzn-0.jar,s3://你的依赖路径/hudi-utilities-bundle_2.12-0.11.1-amzn-0.jar"
      }
  }'

2. 在应用创建时预设依赖

如果多个作业需要复用相同依赖,可以在创建EMR Serverless应用时,通过spark-defaults.conf配置文件预设spark.jars:

spark.jars s3://你的依赖路径/hudi-spark3.3-bundle_2.12-0.11.1-amzn-0.jar,s3://你的依赖路径/hudi-utilities-bundle_2.12-0.11.1-amzn-0.jar

创建应用时指定该配置文件的S3路径,后续提交作业无需重复设置依赖。

3. 打包成胖JAR(Uber JAR)

如果依赖固定且数量不多,可将主程序与所有依赖打包成一个胖JAR,直接提交这个JAR即可,无需额外指定依赖项。这种方式适合依赖稳定的作业,简化提交流程。

注意事项

  • 确保执行角色拥有访问S3依赖包路径的权限(需添加s3:GetObject等相关权限)。
  • EMR Serverless不支持本地文件路径,所有依赖必须上传至S3等可访问的存储服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:37:08