You need to enable JavaScript to run this app.
E-MapReduce

E-MapReduce

复制全文
EMR Serverless SDK 参考
Spark-submit 工具使用说明
复制全文
Spark-submit 工具使用说明

环境要求

本地需已安装JDK8 / JDK17,并已设置JAVA_HOME环境变量。

echo $JAVA_HOME #查询JAVA_HOME目录位置
java -version #查看版本

安装工具包

  1. 单击点击此处下载工具包。
  2. 执行以下命令,将工具包解压到本地的指定目录。
cd /工具包路径/
tar -xzf emr.spark.serverless_spark_submit_{version}.tar.gz

文件目录的结构如下。
Image

  1. 配置环境变量。
export SPARK_HOME=/工具包路径/
export PATH=$SPARK_HOME/bin:$PATH
  1. 检查命令安装是否成功。
spark-submit --help

Image

配置相关参数

在提交之前,您需根据实际情况修改conf文件夹下spark-defaults.conf文件中的如下参数:

spark.app.name=serverless-spark-jar   #修改为您的的作业名称,也可在命令行提交时指定
serverless.spark.region=cn-beijing    #修改为您需要访问的Serverless Spark产品Region
serverless.spark.endpoint=https://open.volcengineapi.com   #固定值,暂无需修改
serverless.spark.service=emr_serverless   #固定值,暂无需修改
serverless.spark.access.key=YOUR_ACCESS_KEY   #修改为您的账号Access Key
serverless.spark.secret.key=YOUR_SECRET_KEY   #修改为您的账号Secret Key
serverless.spark.tos.bucket=YOUR_TOS_BECKET_NAME   #修改为您的TOS桶名,请确保您的AK/SK对此TOS桶有访问权限,该桶将被用于上传本地jar等依赖文件,这些文件会在Spark运行时被加载。

说明

说明
文件中#及其后面部分为注释,用户修改完参数后需删除该部分注释。

使用命令提交Spark Jar作业

使用spark-submit 命令提交SparkJar示例作业,极简版提交示例 如下(已配置上述参数)。

spark-submit --class com.volcengine.emr.serverless.demo.ServerlessSparkDemo lib/serverless-spark-submit-example-1.0.0.jar

说明

示例中的serverless-spark-submit-example-1.0.0.jar文件在工具包解压后的lib目录下。

示例1:提交本地Jar包任务

说明

命令行指定的参数优先级更高,同时配置的情况下,spark-defaults.conf文件中的参数将被覆盖。

spark-submit --name ServerlessJarDemo --async --jars /path/to/dependency1.jar --region cn-beijing --access-key-id your-access-key --access-key-secret your-secret-key --tos-bucket your-tos-bucket --class your-main-class /path/to/primary-dependency.jar arg1 arg2

示例2:提交TOS Jar包任务

spark-submit --name ServerlessJarDemo --async --jars tos://your-bucket/dependency1.jar --region cn-beijing --access-key-id your-access-key --access-key-secret your-secret-key --class your-main-class tos://your-bucket/primary-dependency.jar arg1 arg2

使用命令提交Spark SQL作业

spark-sql命令可用于提交SQL作业,支持提交存储于TOS桶、存储于本地系统或来自命令行输入的SQL文本,详见下述示例。

示例1:使用"-f"参数提交位于TOS桶中的SQL文件

spark-sql -f tos://your-bucket/path/to/query.sql

示例2:使用"-f"参数提交位于本地的SQL文件

spark-sql -f /path/to/query.sql

示例3:使用"-e"参数提交命令行输入的SQL文本

spark-sql -e "select 1"

参数说明

命令行参数说明

命令行的参数具体说明如下:

说明

  • 您可以在工具包的 spark-defaults.conf 中配置全局任务参数;也可以在提交作业的同时,通过命令行参数显示指定参数,此时设置的参数为作业级参数,优先级高于 spark-defaults.conf 中的配置。
  • 对应参数的“是否必须”如果为“是",则,在 spark-defaults.conf 或命令行参数中有取值即可。

命令行参数名

对应spark-defaults.conf参数值

是否必须

默认值

说明

--name

spark.app.name

任务名称

--class

tqs.spark.jar.class

任务执行的主类,不填写时会从jar包中尝试获取Main Class。

--region

serverless.spark.region

执行 Serverless spark 任务的火山引擎地域。

  • 华北:cn-beijing
  • 华东:cn-shanghai
  • 华南:cn-guangzhou
  • 柔佛:ap-southeast-1
  • 自动驾驶云:cn-beijing-selfdrive

--access-key-id

serverless.spark.access.key

您的账号Access Key

--access-key-secret

serverless.spark.secret.key

您的账号Secret Key

--session-token

serverless.spark.session.token

在Assume Role场景下,需要填写session token

--tos-bucket

serverless.spark.tos.bucket

指定一个TOS桶,用来将您本地的jar文件上传到此桶中,Spark任务启动时将从该tos桶加载jar文件。如您的文件已存在TOS桶中,则此参数可不填写

--tos-endpoint

serverless.spark.tos.endpoint

指定tos endpoint地址,在火山引擎内部网络访问TOS桶时可以配置为TOS内网的endpoint,比如华北可以配置为tos-cn-beijing.ivolces.com

--conf

Spark运行时参数,可参考:Spark 配置官网文档

--properties-file

spark.properties

$SPARK_HOME/conf/spark-defaults.conf

spark配置文件所在路径,默认为$SPARK_HOME/conf/spark-defaults.conf,即上述安装包所在位置下conf/spark-defaults.conf

--driver-cores

spark.driver.cores

4

Driver的核数

--driver-memory

spark.driver.memory

16g

Driver的内存大小

--driver-java-options

spark.driver.extraJavaOptions

Driver JVM的参数

--driver-class-path

spark.driver.extraClassPath

Driver 的额外class path

--print-driver-log

是否打印driver的执行日志,可选值:

  • stderr:标准错误输出
  • stdout:标准输出

--executor-memory

spark.executor.memory

16g

Executor的内存大小

--executor-cores

spark.executor.cores

4

Executor的核数

--num-executors

spark.executor.instances

1

Executor的个数

--queue

las.execute.queuename

任务运行的队列名称

--async

若指定,则spark-submit命令将在任务成功提交后退出,不会等待任务运行结束。

--jars

spark.jars

逗号分隔的jar文件路径,Spark运行时将加载这些jar文件,可支持本地文件或tos文件。

--archives

spark.archives

逗号分隔的archive文件,将被加载到Spark运行时的工作目录下,可支持本地文件或tos文件。

--files

spark.files

逗号分隔的其他文件,将被加载到Spark运行时的工作目录下,可支持本地文件或tos文件。

--kill-job-on-signal

serverless.spark.kill.job.on.signal

指定该参数后,如果spark-submit的进程被kill,或运行的终端接收到 SIGINT(Ctrl+C)信号,提交的 EMR Serverless Spark 作业也将同步被终止。

-f

spark-sql命令接收的SQL文件位置,可填位于tos桶的SQL文件或位于本地的SQL文件。

-e

spark-sql命令接收的SQL文本。

常见资源参数

参数类型

参数key

说明

默认值

Driver 相关

spark.driver.memory

Driver 堆内内存大小

12g

spark.driver.memoryOverhead

Driver 堆外内存大小

4g

spark.driver.cores

Driver 程序的 CPU 核心数

4

spark.driver.maxResultSize

Driver 返回结果的最大大小

3g

Executor 相关

spark.executor.cores

每个 Executor 的 CPU 核心数

4

spark.executor.memory

每个 Executor 的内存大小

12g

spark.executor.memoryOverhead

每个 Executor 的堆外内存大小

4g

spark.executor.instances

Executor 实例数(默认开启了dynamic,无需设置此参数)

1

dynamic相关

spark.dynamicAllocation.enabled

是否开启dynamic

true

spark.dynamicAllocation.minExecutors

最少Executor个数

1

spark.dynamicAllocation.maxExecutors

最大Executor个数

30

文件读并行度

spark.sql.files.maxPartitionBytes

Map 单个task的文件大小

268435456

spark.sql.shuffle.partitions

Shuffle 操作时生成的分区数

200

AQE

spark.sql.adaptive.enabled

Adaptive execution开关,包含自动调整并行度,解决数据倾斜等优化

true

spark.sql.adaptive.maxNumPostShufflePartitions

动态最大的并行度,对于shuffle量大的任务适当增大可以减少每个task的数据量,如1024

500

spark.sql.adaptive.minNumPostShufflePartitions

AQE 动态调整 shuffle 分区数时的下限。

5

最近更新时间:2026.01.21 15:46:42
这个页面对您有帮助吗?
有用
有用
无用
无用