You need to enable JavaScript to run this app.
导航
Spark SQL作业开发指南
最近更新时间:2024.05.13 16:37:27首次发布时间:2024.05.13 16:37:27

简介

EMR Serverless Spark支持用户提交Spark SQL作业,您可在EMR Serverless Spark控制台,完成Spark SQL 的解析与任务提交。开箱即用,无需额外的集群管理。
EMR Serverless Spark 语法 100%兼容开源Spark 3.5.1 版本,详细语法可参考:Spark 3.5.1 语法

解析Spark SQL

在EMR Serverless Spark控制台 -> 创建作业中,新建 Tab 后,用户可以编写Spark SQL。
点击右下方解析按钮,即可进行SQL解析。SQL解析可以快速发现您SQL编写中存在的问题,提前将错误暴露在任务执行前,提升您的开发效率,推荐在任务运行前,先进行Spark SQL解析。如果SQL无问题,则会弹出解析成功tip。
如果SQL存在问题,则会解析失败,并提示错误原因:
常见解析失败原因详见:常见问题

提交Spark SQL任务

完成SQL编辑后,您可点击控制台右下角的运行按钮,完成任务的提交,点击后,则会弹出提交成功的标识;并在下方的查询日志中,会显示您本次提交的作业id,以及当前的任务状态,您可进一步在作业管理处查看详细任务情况:

任务提交至EMR Serverless 集群后,则会在查询日志中显示Spark Web UI,你可点击:打开链接,进一步在Web UI详细查看当前任务的执行情况。任务执行成功后,则会为您显示当前查询的结果。
您也可以在控制台完成查询结果的下载,结果文件默认以csv格式存储。
同时,您还可以在查询结果schema行,点击列上的放大镜按钮,输入关键字,搜索结果中的关键信息
如果您想查看当前tab的历史作业情况,可以点下方的历史记录,即可查看历史作业的结果以及代码等:

失败作业排查方式,详见:常见问题

Spark SQL作业分类

EMR Serverless Spark支持两类Spark SQL作业:

  1. 普通Spark SQL作业

使用公共队列或购买的队列中无SQL专用资源时,您提交任务,会临时给您拉起一个独享的Spark SQL作业,您可以定制化的设置Spark SQL任务中,Driver/Executor 所用的CPU/Memory等参数。

  1. 预拉起Spark SQL作业

当您的队列中,存在SQL专用资源时,使用该队列提交SparkSQL作业,即可提交到专属的预拉起集群上,享受低overhead、低延迟作业,无需每次临时申请资源,作业最快可以在秒级完成。在SQL专用资源紧张时,EMR Serverless Spark 还可以自动复用队列中的通用资源,实现任务资源弹性。

说明

因为集群为预拉起,所以您SQL中设置的Driver/Exeutor CPU/Memory无法生效,如果有定制化的集群规格需求,请工单联系我们。
如果您的队列中存在通用资源,且希望自定义某个SQL任务的Driver/Exeutor CPU/Memory,则可在SQL中加上:

set tqs.query.engine.type = sparkcli;

强制使用通用资源来运行SQL作业,此时该SQL作业会临时拉起对应规格的Driver/Executor来运行。