EMR Serverless Spark支持通过SQL代码编辑和运行任务。本文带您快速体验SQL的创建、启动和运维等操作。
前提条件
步骤一:创建并发布开发任务
任务必须先发布,然后才能在任务编排过程中使用。
-
进入数据开发页面。
-
在左侧导航栏,选择EMR Serverless > Spark。
-
在Spark页面,单击目标工作空间名称。
-
在EMR Serverless Spark页面,单击左侧导航栏中的数据开发。
-
新建users_task任务。
-
在开发目录页签下,单击
图标。 -
在新建对话框中,输入名称(例如users_task),类型使用默认的SparkSQL,然后单击确定。
-
拷贝如下代码到新增的Spark SQL页签(users_task)中。
CREATE TABLE IF NOT EXISTS students ( name VARCHAR(64), address VARCHAR(64) ) USING PARQUET PARTITIONED BY (data_date STRING) OPTIONS ( 'path'='oss://<bucketname>/path/' ); INSERT OVERWRITE TABLE students PARTITION (data_date = '${ds}') VALUES ('Ashua Hill', '456 Erica Ct, Cupertino'), ('Brian Reed', '723 Kern Ave, Palo Alto');目前支持以下基础日期变量,默认为昨天。
变量
数据类型
说明
{data_date}
str
表示日期信息的变量,格式为
YYYY-MM-DD。例如,2023-09-18。
{ds}
str
{dt}
str
{data_date_nodash}
str
表示日期信息的变量,格式为
YYYYMMDD。例如,20230918。
{ds_nodash}
str
{dt_nodash}
str
{ts}
str
表示时间戳,格式为
YYYY-MM-DDTHH:MM:SS。例如,2023-09-18T16:07:43。
{ts_nodash}
str
表示时间戳,格式为
YYYYMMDDHHMMSS。例如,20230918160743。
-
在数据库下拉列表中选择一个数据库,在会话下拉列表中选择一个已启动的会话实例。
您也可以在下拉列表中选择创建 SQL 会话,直接创建一个新的会话实例。会话管理更多介绍,请参见管理SQL会话。
-
单击运行,执行创建的任务。
返回结果信息可以在下方的运行结果中查看。如果有异常,则可以在运行问题中查看。
-
-
发布users_task任务。
说明任务指定的参数会伴随任务一起发布,并成为产线运行任务时使用的参数;而在SQL编辑器中执行的任务则使用会话中的参数。
-
在新增的Spark SQL页签中,单击发布。
-
在弹出的对话框中,可以输入发布信息,然后单击确定。
-
-
新建users_count任务。
-
在开发目录页签下,单击
图标。 -
在新建对话框中,输入名称(例如users_count),类型使用默认的SparkSQL,单击确定。
-
拷贝如下代码到新增的Spark SQL任务页签(users_count)中。
SELECT COUNT(1) FROM students; -
在数据库下拉列表中选择一个数据库,在会话下拉列表中选择一个已启动的会话实例。
您也可以在下拉列表中选择创建 SQL 会话,直接创建一个新的会话实例。会话管理更多介绍,请参见管理SQL会话。
-
单击运行,执行创建的任务。
返回结果信息可以在下方的运行结果中查看。如果有异常,则可以在运行问题中查看。
-
-
发布users_count任务。
说明任务指定的参数会伴随任务一起发布,并成为产线运行任务时使用的参数;而在SQL编辑器中执行的任务则使用会话中的参数。
-
在新增的Spark SQL任务页签中,单击发布。
-
在弹出的对话框中,可以输入发布信息,然后单击确定。
-
步骤二:创建工作流及其节点
-
在左侧导航栏中,单击任务编排。
-
在任务编排页面,单击创建工作流。
-
在创建工作流面板中,输入工作流名称(例如,spark_workflow_task),然后单击下一步。
其他设置区域的参数,请根据您的实际情况配置,更多参数信息请参见管理工作流。
-
添加users_task节点。
-
在新建的节点画布中,单击添加节点。
-
弹出添加节点面板,在来源文件路径下拉列表中选择已发布的任务users_task,然后单击保存。
-
-
添加users_count节点。
-
单击添加节点。
-
弹出添加节点面板,在来源文件路径下拉列表中选择已发布的任务users_count,在上游节点下拉列表中选择users_task,单击保存。
-
-
在新建的节点画布中,单击发布工作流。
此时画布中包含 users_task 和 users_count 两个 SQL 类型节点,两者通过箭头连接表示执行依赖关系。
-
在发布对话框中,可以输入发布信息,然后单击确定。
步骤三:运行工作流
-
在任务编排页面,单击新建工作流(例如,spark_workflow_task)的工作流名称。
-
在工作流实例列表页面,单击运行。
说明在配置了调度周期后,您也可以在任务编排页面通过左侧的开关按钮启动调度。
-
在运行工作流对话框中,单击确定。
步骤四:查看实例状态
-
在任务编排页面,单击目标工作流名称(例如,spark_workflow_task)。
-
在工作流实例列表页面,您可以查看对应的所有工作流实例,以及各工作流实例的运行时间、运行状态等。
页面上方以柱状图展示各日期的工作流运行状态分布,下方表格还包含工作流运行ID、版本、运行方式、节点数量、调度时间、启动时间和结束时间等列。
-
单击工作流实例列表区域的工作流运行 ID,或单击上方的工作流实例图页签,可以查看对应的工作流实例图。
-
单击目标节点实例,在弹出的节点信息框中,您可以根据需要操作或查看信息。
关于此部分内容的相关操作及详细介绍,请参见查看节点实例。
节点信息框中展示任务的启动时间、结束时间、运行状态、运行时间等运行详情,并提供重跑、终止运行、置成功等操作按钮。
例如,单击Spark UI跳转至Spark Jobs页面,可以查看Spark任务的实时信息。
Spark Jobs 页面展示已完成作业列表,包含 Job Id、Description、Submitted、Duration、Stages: Succeeded/Total、Tasks: Succeeded/Total 等列,可确认各作业的执行状态与耗时。
-
单击任务运行 ID,进入任务历史页面,可以查看指标、诊断和日志信息。
在任务总览页签的基础信息区域,可查看运行状态、任务名称、任务运行 ID、任务类型、引擎版本及 Fusion 加速状态等信息。
步骤五:工作流运维
在任务编排页面,单击目标工作流名称,进入工作流实例列表页面。您可以:
-
在工作流信息区域,可以编辑部分参数。
-
在工作流实例列表区域,可以查看所有工作流。单击工作流运行 ID,可以进入工作流实例图页面。
工作流实例图页面展示任务节点的依赖关系及运行状态。示例中,users_task(SQL)为上游节点,users_count(SQL)为下游节点,两者通过连线表示依赖关系,节点均显示运行成功(绿色对勾)。
步骤六:查看数据
-
在左侧导航栏中,单击数据开发。
-
新建SparkSQL开发,然后输入并运行以下命令查看表的详细信息。
SELECT * FROM students;返回信息如下。
返回结果包含 name、address、data_date 三列,共两条记录:Ashua Hill(地址:456 Erica Ct, Cupertino,日期:2024-01-01)和 Brian Reed(地址:723 Kern Ave, Palo Alto,日期:2024-01-01)。