EMR Serverless Spark 实践教程 | 通过 spark-submit 命令行工具提交 Spark 任务

本文涉及的产品
EMR Serverless Spark 免费试用,1000 CU*H 有效期3个月
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 本文以 ECS 连接 EMR Serverless Spark 为例,介绍如何通过 EMR Serverless spark-submit 命令行工具进行 Spark 任务开发。

前提条件

已安装 Java 1.8 或以上版本。


操作流程

步骤一:下载并安装 EMR Serverless spark-submit 工具

  1. 单击emr-serverless-spark-tool-0.1.0-bin.zip,下载安装包。
  2. 执行以下命令,解压并安装EMR Serverless spark-submit工具。
unzip emr-serverless-spark-tool-0.1.0-bin.zip


步骤二:配置相关参数

  1. 执行以下命令,修改 connection.properties 中的配置。
vim emr-serverless-spark-tool-0.1.0/conf/connection.properties


  1. 推荐按照如下内容对文件进行配置,参数格式为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。填写格式为:emr-serverless-spark.<yourRegionId>.aliyuncs.com

本文以杭州地域为例,参数值为emr-serverless-spark.cn-hangzhou.aliyuncs.com

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 任务

  1. 执行以下命令,进入 EMR Serverless spark-submit 工具目录。
cd emr-serverless-spark-tool-0.1.0


  1. 请按照以下格式提交任务。
  • 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.pyemployee.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方式
  1. EMR Serverless Spark 页面,单击左侧导航栏中的任务历史
  2. 任务历史开发任务页签,您可以查看提交的任务。



(可选)步骤五:终止 Spark 任务

cd emr-serverless-spark-tool-0.1.0
./bin/spark-submit --kill <jr-8598aa9f459d****>


说明

仅能终止处于运行状态(running)的任务。



相关文档

  1. EMR Serverless Spark 版官网:https://www.aliyun.com/product/bigdata/serverlessspark
  2. 产品控制台:https://emr-next.console.aliyun.com/
  3. 产品文档:https://help.aliyun.com/zh/emr/emr-serverless-spark/

EMR Serverless Spark 在 2024年5月正式开启公测,在公测期间可以免费使用最高 100 CU 计算资源,欢迎试用。如果您在使用 EMR Serverless Spark 版的过程中遇到任何疑问,可钉钉扫描以下二维码加入钉钉群(群号:58570004119)咨询。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
2月前
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
260 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
|
2月前
|
分布式计算 运维 搜索推荐
立马耀:通过阿里云 Serverless Spark 和 Milvus 构建高效向量检索系统,驱动个性化推荐业务
蝉妈妈旗下蝉选通过迁移到阿里云 Serverless Spark 及 Milvus,解决传统架构性能瓶颈与运维复杂性问题。新方案实现离线任务耗时减少40%、失败率降80%,Milvus 向量检索成本降低75%,支持更大规模数据处理,查询响应提速。
167 57
|
2月前
|
存储 运维 Serverless
千万级数据秒级响应!碧桂园基于 EMR Serverless StarRocks 升级存算分离架构实践
碧桂园服务通过引入 EMR Serverless StarRocks 存算分离架构,解决了海量数据处理中的资源利用率低、并发能力不足等问题,显著降低了硬件和运维成本。实时查询性能提升8倍,查询出错率减少30倍,集群数据 SLA 达99.99%。此次技术升级不仅优化了用户体验,还结合AI打造了“一看”和“—问”智能场景助力精准决策与风险预测。
249 69
|
3月前
|
SQL 分布式计算 资源调度
Dataphin功能Tips系列(48)-如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
如何根据Hive SQL/Spark SQL的任务优先级指定YARN资源队列
|
3月前
|
分布式计算 监控 Java
|
4月前
|
SQL 存储 OLAP
阿里云 EMR Serverless StarRocks3.x,极速统一的湖仓新范式
阿里云 EMR Serverless StarRocks3.x,极速统一的湖仓新范式
|
2月前
|
存储 分布式计算 OLAP
百观科技基于阿里云 EMR 的数据湖实践分享
百观科技为应对海量复杂数据处理的算力与成本挑战,基于阿里云 EMR 构建数据湖。EMR 依托高可用的 OSS 存储、开箱即用的 Hadoop/Spark/Iceberg 等开源技术生态及弹性调度,实现数据接入、清洗、聚合与分析全流程。通过 DLF 与 Iceberg 的优化、阶梯式弹性调度(资源利用率提升至70%)及倚天 ARM 机型搭配 EMR Trino 方案,兼顾性能与成本,支撑数据分析需求,降低算力成本。
279 59
|
4月前
|
存储 分布式计算 物联网
美的楼宇科技基于阿里云 EMR Serverless Spark 构建 LakeHouse 湖仓数据平台
美的楼宇科技基于阿里云 EMR Serverless Spark 建设 IoT 数据平台,实现了数据与 AI 技术的有效融合,解决了美的楼宇科技设备数据量庞大且持续增长、数据半结构化、数据价值缺乏深度挖掘的痛点问题。并结合 EMR Serverless StarRocks 搭建了 Lakehouse 平台,最终实现不同场景下整体性能提升50%以上,同时综合成本下降30%。
424 58
|
4月前
|
机器学习/深度学习 分布式计算 大数据
阿里云 EMR Serverless Spark 在微财机器学习场景下的应用
面对机器学习场景下的训练瓶颈,微财选择基于阿里云 EMR Serverless Spark 建立数据平台。通过 EMR Serverless Spark,微财突破了单机训练使用的数据规模瓶颈,大幅提升了训练效率,解决了存算分离架构下 Shuffle 稳定性和性能困扰,为智能风控等业务提供了强有力的技术支撑。
251 15
|
4月前
|
SQL 分布式计算 Serverless
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用