前提条件
已安装 Java 1.8 或以上版本。
操作流程
步骤一:下载并安装 EMR Serverless spark-submit 工具
- 单击emr-serverless-spark-tool-0.1.0-bin.zip,下载安装包。
- 执行以下命令,解压并安装EMR Serverless spark-submit工具。
unzip emr-serverless-spark-tool-0.1.0-bin.zip
步骤二:配置相关参数
- 执行以下命令,修改 connection.properties 中的配置。
vim emr-serverless-spark-tool-0.1.0/conf/connection.properties
- 推荐按照如下内容对文件进行配置,参数格式为
key=value
,示例如下。
accessKeyId=yourAccessKeyId accessKeySecret=yourAccessKeySecret # securityToken=yourSecurityToken regionId=cn-hangzhou endpoint=emr-serverless-spark.cn-hangzhou.aliyuncs.com workspaceId=w-xxxxxxxxxxxx resourceQueueId=dev_queue # networkServiceId=xxxxxx releaseVersion=esr-2.1 (Spark 3.3.1, Scala 2.12, Java Runtime)
涉及参数说明如下表所示。
参数 |
是否必填 |
说明 |
accessKeyId |
是 |
执行Spark任务使用的阿里云账号或RAM用户的AccessKey ID。 |
accessKeySecret |
是 |
执行Spark任务使用的阿里云账号或RAM用户的AccessKey Secret。 |
securityToken |
否 |
RAM用户的Token。 说明 仅在进行STS认证时需要填写该项。 |
regionId |
是 |
地域ID。本文以杭州地域为例。 |
endpoint |
是 |
EMR Serverless Spark的Endpoint。填写格式为: 本文以杭州地域为例,参数值为 |
workspaceId |
是 |
EMR Serverless Spark工作空间ID。 |
resourceQueueId |
否 |
队列名称。默认值为dev_queue。 |
networkServiceId |
否 |
网络连接名称。 说明 仅当Spark任务需要访问VPC资源时,才需要填写此项。具体操作,请参见EMR Serverless Spark与其他VPC间网络互通。 |
releaseVersion |
否 |
EMR Serverless Spark版本号。默认值为esr-2.1(Spark 3.3.1, Scala 2.12, Java Runtime)。 |
步骤三:提交 Spark 任务
- 执行以下命令,进入 EMR Serverless spark-submit 工具目录。
cd emr-serverless-spark-tool-0.1.0
- 请按照以下格式提交任务。
- Java/Scala 类型任务
本文示例使用的 spark-examples_2.12-3.3.1.jar,您可以单击 spark-examples_2.12-3.3.1.jar,直接下载测试 JAR 包,然后上传 JAR 包至 OSS。该 JAR 包是 Spark 自带的一个简单示例,用于计算圆周率π的值。
./bin/spark-submit --name SparkPi \ --queue dev_queue \ --num-executors 5 \ --driver-memory 1g \ --executor-cores 2 \ --executor-memory 2g \ --class org.apache.spark.examples.SparkPi \ oss://<yourBucket>/path/to/spark-examples_2.12-3.3.1.jar \ 10000
- PySpark 类型任务
本文示例使用的 DataFrame.py 和 employee.csv,您可以单击DataFrame.py和employee.csv,直接下载测试文件,然后上传 JAR 包至 OSS。
说明
- DataFrame.py 文件是一段使用 Apache Spark 框架进行 OSS 上数据处理的代码。
- employee.csv 文件中定义了一个包含员工姓名、部门和薪水的数据列表。
./bin/spark-submit --name PySpark \ --queue dev_queue \ --num-executors 5 \ --driver-memory 1g \ --executor-cores 2 \ --executor-memory 2g \ --conf spark.tags.key=value \ --files oss://<yourBucket>/path/to/employee.csv \ oss://<yourBucket>/path/to/DataFrame.py \ 10000
相关参数说明如下:
- 兼容开源 spark-submit 工具的参数。
参数名称 |
示例值 |
说明 |
--class |
org.apache.spark.examples.SparkPi |
指定Spark任务的入口类名(Java或者Scala程序),Python程序无需此参数。 |
--num-executors |
10 |
Spark任务的Executor数量。 |
--driver-cores |
1 |
Spark任务的Driver核数。 |
--driver-memory |
4g |
Spark任务的Driver内存。 |
--executor-cores |
1 |
Spark任务的Executor核数。 |
--executor-memory |
1024m |
Spark任务的Executor内存。 |
--files |
oss://<yourBucket>/file1,oss://<yourBucket>/file2 |
Spark任务需要引用的资源文件,仅支持OSS资源,多个文件使用逗号(,)分隔。 |
--py-files |
oss://<yourBucket>/file1.py,oss://<yourBucket>/file2.py |
Spark任务需要引用的Python脚本,仅支持OSS资源,多个文件使用逗号(,)分隔。该参数仅对PySpark程序生效。 |
--jars |
oss://<yourBucket>/file1.jar,oss://<yourBucket>/file2.jar |
Spark任务需要引用的JAR包资源,仅支持OSS资源,多个文件使用逗号(,)分隔。 |
--archives |
oss://<yourBucket>/archive.tar.gz#env,oss://<yourBucket>/archive2.zip |
Spark任务需要引用的archive包资源,仅支持OSS资源,多个文件使用逗号(,)分隔。 |
--queue |
root_queue |
Spark任务运行的队列名称,需与EMR Serverless Spark工作空间队列管理中的队列名称保持一致。 |
--conf |
spark.tags.key=value |
Spark任务自定义参数。 |
--status |
jr-8598aa9f459d**** |
查看Spark任务状态。 |
--kill |
jr-8598aa9f459d**** |
终止Spark任务。 |
- 非开源 spark-submit 工具的参数。
参数名称 |
示例值 |
说明 |
--detach |
无需填充 |
使用此参数,spark-submit将在提交任务后立即退出,不再等待或查询任务状态。 |
--detail |
jr-8598aa9f459d**** |
查看Spark任务详情。 |
- 不支持的开源 spark-submit 工具的参数如下:
- --deploy-mode
- --master
- --proxy-user
- --repositories
- --keytab
- --principal
- --total-executor-cores
- --driver-library-path
- --driver-class-path
- --supervise
- --verbose
步骤四:查询 Spark 任务
- CLI 方式
查询 Spark 任务状态
cd emr-serverless-spark-tool-0.1.0 ./bin/spark-submit --status <jr-8598aa9f459d****>
查询 Spark 任务详情
cd emr-serverless-spark-tool-0.1.0 ./bin/spark-submit --detail <jr-8598aa9f459d****>
- UI方式
- 在EMR Serverless Spark 页面,单击左侧导航栏中的任务历史。
- 在任务历史的开发任务页签,您可以查看提交的任务。
(可选)步骤五:终止 Spark 任务
cd emr-serverless-spark-tool-0.1.0 ./bin/spark-submit --kill <jr-8598aa9f459d****>
说明
仅能终止处于运行状态(running)的任务。
相关文档
- EMR Serverless Spark 版官网:https://www.aliyun.com/product/bigdata/serverlessspark
- 产品控制台:https://emr-next.console.aliyun.com/
- 产品文档:https://help.aliyun.com/zh/emr/emr-serverless-spark/
EMR Serverless Spark 在 2024年5月正式开启公测,在公测期间可以免费使用最高 100 CU 计算资源,欢迎试用。如果您在使用 EMR Serverless Spark 版的过程中遇到任何疑问,可钉钉扫描以下二维码加入钉钉群(群号:58570004119)咨询。