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)咨询。

目录
相关文章
|
6月前
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
571 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
|
DataWorks 数据挖掘 Serverless
阿里云EMR Serverless StarRocks 内容合集
阿里云 EMR StarRocks 提供存算分离架构,支持实时湖仓分析,适用于多种 OLAP 场景。结合 Paimon 与 Flink,助力企业高效处理海量数据,广泛应用于游戏、教育、生活服务等领域,显著提升数据分析效率与业务响应速度。
154 0
|
6月前
|
存储 运维 Serverless
千万级数据秒级响应!碧桂园基于 EMR Serverless StarRocks 升级存算分离架构实践
碧桂园服务通过引入 EMR Serverless StarRocks 存算分离架构,解决了海量数据处理中的资源利用率低、并发能力不足等问题,显著降低了硬件和运维成本。实时查询性能提升8倍,查询出错率减少30倍,集群数据 SLA 达99.99%。此次技术升级不仅优化了用户体验,还结合AI打造了“一看”和“—问”智能场景助力精准决策与风险预测。
548 69
|
4月前
|
人工智能 分布式计算 DataWorks
一体系数据平台的进化:基于阿里云 EMR Serverless Spark 的持续演进
本文介绍了一体系汽配供应链平台如何借助阿里云EMR Serverless Spark实现从传统Hadoop平台向云原生架构的迁移。通过融合高质量零部件供应与创新互联网科技,一体系利用EMR Serverless Spark和DataWorks构建高效数据分析体系,解决大规模数据处理瓶颈。方案涵盖实时数据集成、Lakehouse搭建、数仓分层设计及BI/ML应用支持,显著提升数据处理性能与业务响应速度,降低运维成本,为数字化转型奠定基础。最终实现研发效率提升、运维压力减轻,并推动AI技术深度整合,迈向智能化云原生数据平台。
155 4
|
17天前
|
存储 人工智能 Serverless
函数计算进化之路:AI 应用运行时的状态剖析
AI应用正从“请求-响应”迈向“对话式智能体”,推动Serverless架构向“会话原生”演进。阿里云函数计算引领云上 AI 应用 Serverless 运行时技术创新,实现性能、隔离与成本平衡,开启Serverless AI新范式。
227 12
|
4月前
|
存储 编解码 Serverless
Serverless架构下的OSS应用:函数计算FC自动处理图片/视频转码(演示水印添加+缩略图生成流水线)
本文介绍基于阿里云函数计算(FC)和对象存储(OSS)构建Serverless媒体处理流水线,解决传统方案资源利用率低、运维复杂、成本高等问题。通过事件驱动机制实现图片水印添加、多规格缩略图生成及视频转码优化,支持毫秒级弹性伸缩与精确计费,提升处理效率并降低成本,适用于高并发媒体处理场景。
227 0
|
12天前
|
人工智能 运维 安全
聚焦 AI 应用基础设施,云栖大会 Serverless AI 全回顾
2025 年 9 月 26 日,为期三天的云栖大会在杭州云栖小镇圆满闭幕。随着大模型技术的飞速发展,我们正从云原生时代迈向一个全新的 AI 原生应用时代。为了解决企业在 AI 应用落地中面临的高成本、高复杂度和高风险等核心挑战,阿里云基于函数计算 FC 发布一系列重磅服务。本文将对云栖大会期间 Serverless+AI 基础设施相关内容进行全面总结。
|
6月前
|
人工智能 开发框架 安全
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力,用户只需提交 npx 命令即可“零改造”将开源 MCP Server 部署到云上,函数计算 FC 会准备好计算资源,并以弹性、可靠的方式运行 MCP 服务,按实际调用时长和次数计费,欢迎你在阿里云百炼和函数计算 FC 上体验 MCP 服务。
535 30
|
23天前
|
人工智能 Kubernetes 安全
重塑云上 AI 应用“运行时”,函数计算进化之路
回顾历史,电网的修建,深刻地改变了世界的经济地理和创新格局。今天,一个 AI 原生的云端运行时的进化,其意义也远不止于技术本身。这是一次设计哲学的升华:从“让应用适应平台”到“让平台主动理解和适应智能应用”的转变。当一个强大、易用、经济且安全的 AI 运行时成为像水电一样的基础设施时,它将极大地降低创新的门槛。一个独立的开发者、一个小型创业团队,将有能力去创造和部署世界级的 AI 应用。这才是技术平权的真谛,是激发全社会创新潜能的关键。