EMR Serverless 支持用户提交 SparkSQL 作业,适用于交互式数据查询、ETL任务和报表生成等场景。您可通过 EMR Serverless 控制台、SDK 及 JDBC 等多种方式完成 SparkSQL 的解析与任务提交,开箱即用,无需额外的集群管理。
本文将介绍通过控制台、SDK 及 JDBC 等多种方式提交 SparkSQL 作业的操作步骤。
说明
EMR Serverless 语法 100%兼容开源 Spark 3.5.1 版本,详细语法可参考:Spark 3.5.1 语法。
EMR Serverless Spark 支持如下两种 SparkSQL 作业。
使用公共队列或独占队列中的 Default 计算组时,您提交任务,会临时给您拉起一个独享的 SparkSQL 作业,您可以定制化的设置 SparkSQL 任务中,Driver/Executor 所用的 CPU/Memory 等参数。
当您使用独占队列中的 Spark SQL Warehouse 计算组时,该计算组存在 SQL 专用资源,使用该计算组提交 SparkSQL 作业,即可提交到专属的预拉起服务上,享受低 overhead、低延迟等特性,无需申请临时资源,作业最快可以在秒级完成。在 SQL 专用资源紧张时,EMR Serverless Spark 还可以自动复用计算组中的弹性资源,实现任务资源弹性。
说明
因为计算组为预拉起,所以 SQL 中设置的 Driver/Exeutor CPU/Memory 无法生效,如果有定制化的集群规格需求,请提工单联系火山引擎技术人员。
登录 EMR Serverless 控制台,选择目标队列。
进入编辑作业页面,有如下两种方式:
在队列详情页中,点击作业提交,进入编辑作业页面。
在队列详情页中,点击计算组。进入计算组列表页面,选择并进入目标计算组,在计算组详情页的右上角,点击创建作业,进入作业编辑页面。
在作业编辑框的右上角,开发类型选择 SparkSQL。
在作业编辑框中进行 SparkSQL 作业的编辑,编辑完成后,可通过编辑框左下角的格式化按钮,对编辑中的作业进行规范化。
完成 SQL 作业编辑后,您可以通过控制台右上角的队列和计算组来选择计算资源,完成后点击左下角的运行按钮,提交作业。
作业提交完成后,会弹出提交成功的标识,并在下方的查询日志中,会显示您本次提交的作业id,以及当前的任务状态,您可进一步在作业管理处查看详细任务情况。
说明
目前 EMR Serverless 支持 Java 和 Python 两类 SDK。Java SDK 使用方式请参考:Java Query SDK;Python SDK 使用方式请参考:Python Query SDK。
通过 JDBC 方式提交 Spark SQL 时,必须指定 Spark 计算组,Default 计算组不支持通过 JDBC 方式提交作业。使用方式请参考文档:JDBC 使用。