EMR Serverless Spark支持用户提交Spark SQL作业,您可在EMR Serverless控制台,完成Spark SQL 的解析与任务提交。开箱即用,无需额外的集群管理。
EMR Serverless Spark 语法 100%兼容开源Spark 3.5.1 版本,详细语法可参考:Spark 3.5.1 语法。
在EMR Serverless控制台 > 集群详情页>创建作业中,用户可以编写Spark SQL。
说明
如果SQL存在问题,则会解析失败,并提示错误原因。常见解析失败原因详见:常见问题
完成SQL任务编辑后,您可点击控制台左下角的运行
按钮,提交作业,作业提交后,会弹出提交成功的标识;并在下方的查询日志中,会显示您本次提交的作业id,以及当前的任务状态,您可进一步在作业管理处查看详细任务情况。
任务提交至EMR Serverless 集群后,则会在查询日志中显示Spark Web UI,你可点击打开链接,在Web UI详细查看当前任务的执行情况。任务执行成功后,则会为您显示当前查询的结果。
您也可以在控制台完成查询结果的下载,结果文件默认以csv格式存储。
同时,您还可以在查询结果schema行,点击列上的放大镜按钮,输入关键字,搜索结果中的关键信息
如果您想查看当前tab的历史作业情况,可以点下方的历史记录,即可查看历史作业的结果以及代码等:
说明
失败作业排查方式,详见:常见问题。
EMR Serverless Spark支持两类Spark SQL作业:
使用公共队列或购买的队列中无SQL专用资源时,您提交任务,会临时给您拉起一个独享的Spark SQL作业,您可以定制化的设置Spark SQL任务中,Driver/Executor 所用的CPU/Memory等参数。
当您的队列中,存在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来运行。