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

本文涉及的产品
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月前
|
存储 缓存 分布式计算
Spark任务OOM问题如何解决?
大家好,我是V哥。在实际业务中,Spark任务常因数据量过大、资源分配不合理或代码瓶颈导致OOM(Out of Memory)。本文详细分析了各种业务场景下的OOM原因,并提供了优化方案,包括调整Executor内存和CPU资源、优化内存管理策略、数据切分及减少宽依赖等。通过综合运用这些方法,可有效解决Spark任务中的OOM问题。关注威哥爱编程,让编码更顺畅!
212 3
|
4月前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何开发ODPS Spark任务
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
2月前
|
SQL 分布式计算 Serverless
EMR Serverless Spark:一站式全托管湖仓分析利器
本文根据2024云栖大会阿里云 EMR 团队负责人李钰(绝顶) 演讲实录整理而成
169 2
|
3月前
|
SQL 分布式计算 Serverless
阿里云 EMR Serverless Spark 版正式开启商业化
阿里云 EMR Serverless Spark 版正式开启商业化,内置 Fusion Engine,100% 兼容开源 Spark 编程接口,相比于开源 Spark 性能提升300%;提供 Notebook 及 SQL 开发、调试、发布、调度、监控诊断等一站式数据开发体验!
170 3
阿里云 EMR Serverless Spark 版正式开启商业化
|
3月前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
49 5
|
3月前
|
SQL 机器学习/深度学习 分布式计算
Spark适合处理哪些任务?
【9月更文挑战第1天】Spark适合处理哪些任务?
209 3
|
4月前
|
存储 分布式计算 供应链
Spark在供应链核算中应用问题之通过Spark UI进行任务优化如何解决
Spark在供应链核算中应用问题之通过Spark UI进行任务优化如何解决
|
4月前
|
SQL 大数据 数据管理
EMR Serverless StarRocks体验测评
【8月更文挑战第14天】EMR Serverless StarRocks体验测评
87 0
|
4月前
|
分布式计算 Serverless 数据处理
EMR Serverless Spark 实践教程 | 通过 Apache Airflow 使用 Livy Operator 提交任务
Apache Airflow 是一个强大的工作流程自动化和调度工具,它允许开发者编排、计划和监控数据管道的执行。EMR Serverless Spark 为处理大规模数据处理任务提供了一个无服务器计算环境。本文为您介绍如何通过 Apache Airflow 的 Livy Operator 实现自动化地向 EMR Serverless Spark 提交任务,以实现任务调度和执行的自动化,帮助您更有效地管理数据处理任务。
226 0
|
1月前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
130 2
ClickHouse与大数据生态集成:Spark & Flink 实战
下一篇
DataWorks