更新时间:2024-11-14 GMT+08:00
分享

创建并提交SQL作业

SQL编辑器简介

SQL作业编辑器支持使用SQL语句执行数据查询操作。

支持SQL2003,兼容SparkSQL,详细语法描述请参见《数据湖探索SQL语法参考》

在总览页面,单击左侧导航栏中的“SQL编辑器”或SQL作业简介右上角的“创建作业”,可进入“SQL编辑器”页面。

本节内容介绍使用DLI的SQL编辑器创建并提交SQL作业。

使用须知

  • 首次进入SQL编辑器,页面会提示设置DLI作业桶。该桶用于存储使用DLI服务产生的临时数据,例如:作业日志等。

    如果不创建该桶,将无法查看作业日志。桶名称为系统默认。

    在OBS管理控制台页面通过配置桶的生命周期规则,可以实现定时删除OBS桶中的对象或者定时转换对象的存储类别。

    具体操作请参考通过配置生命周期规则

  • SQL编辑器页面可以批量执行SQL语句。
  • 作业编辑窗口常用语法采用不同颜色突出显示。
  • 支持单行注释和多行注释。以“--”开头,后续内容即为注释。

使用SQL编辑器创建并提交SQL作业

  1. 登录DLI管理控制台,选择“SQL编辑器”页面。

    进入“SQL编辑器”页面后,系统会提示“创建DLI临时数据桶”,用于存储使用DLI服务产生的临时数据。在“设置DLI作业桶”对话框中,单击“去设置”。在现实页面上单击DLI作业桶卡片右上角单击编辑符号。在弹出的“设置DLI作业桶”对话框,输入作业桶路径,并单击“确定”。

  2. 在SQL作业编辑窗口右上方的依次选择执行SQL作业所需的队列、数据库等信息,详细参数说明请参考表1
    表1 配置SQL作业信息

    按键&下拉列

    描述

    执行引擎

    SQL作业支持Spark和Trino两种引擎:

    • Spark引擎适用于离线分析。
    • Trino引擎适用于交互式分析。

    队列

    下拉选择需要使用的队列。如果没有可用队列,此处显示“default”队列,default队列为体验使用,建议重新创建队列。具体队列创建可以参考创建弹性资源池并添加队列

    SQL作业只能在队列类型为“SQL队列”下执行。

    数据目录

    数据目录(Catalog)是元数据管理对象,它可以包含多个数据库。

    您可以在DLI中创建并管理多个Catalog,用于不同的元数据隔离。

    数据库

    下拉选择需要使用的数据库。如果没有可用数据库,此处显示“default”默认数据库。数据库创建操作详见在DLI控制台创建数据库和表

    说明:

    如果SQL语句中指定了表所在的数据库,则此处选择的数据库无效。

    设置

    包括设置“参数设置”和“标签”。

    参数设置:以“key/value”的形式设置提交SQL作业的配置项。详细内容请参见《数据湖探索SQL语法参考》。

    标签:以“key/value”的形式设置SQL作业的标签。

  3. 创建数据库和表。

    您可以参考在DLI控制台创建数据库和表提前创建数据库和表。例如本例创建表,表名为“qw”。

  4. 在SQL作业编辑窗口输入表“qw”的SQL查询语句:
    1
    SELECT * FROM qw.qw LIMIT 10;
    

    或者双击左侧表名“qw”,上述查询语句会自动在作业编辑窗口中输入。

    DLI还为您提供了丰富的SQL模板,每种模板都为您提供了使用场景、代码示例和使用指导。您也可以直接使用SQL作业模板快速实现您的业务逻辑。了解模板更多信息请参考创建SQL作业模板

  5. 单击“更多”中的“语法校验”,确认SQL语句书写是否正确。
    1. 如果语法校验失败,请参考《数据湖探索SQL语法参考》检查SQL语句准确性。
    2. 如果语法校验通过,单击“执行”,阅读并同意隐私协议,单击“确定”后执行SQL语句。

    SQL语句执行成功后,在SQL作业编辑窗口下方会显示执行结果。

  6. 查看作业执行结果。

    在查看结果页签,单击以图形形式呈现查询结果。再单击切换回表格形式。

    当前控制台界面查询结果最多显示1000条数据,如果需要查看更多或者全量数据,则可以单击将数据导出到OBS获取。
    • 如果执行结果中无数值列,则无法进行图形化。
    • 图形类型包括柱状图、折线图、扇形图。
    • 柱状图和折线图的X轴可为任意一列,Y轴仅支持数值类型的列,扇形图对应图例和指标。

SQL编辑器功能概览

  • SQL作业参数设置

    单击SQL编辑器页面右上方的“设置”按钮。可以设置SQL作业运行参数和作业标签。

    • 参数设置:以“key/value”的形式设置提交SQL作业的配置项。

      详细内容请参见《数据湖探索SQL语法参考》。

    • 标签:以“key/value”的形式设置SQL作业的标签。
    表2 SQL作业运行参数配置说明

    参数名称

    默认值

    描述

    spark.sql.files.maxRecordsPerFile

    0

    要写入单个文件的最大记录数。如果该值为零或为负,则没有限制。

    spark.sql.autoBroadcastJoinThreshold

    209715200

    配置执行连接时显示所有工作节点的表的最大字节大小。通过将此值设置为“-1”,可以禁用显示。

    说明:

    当前仅支持运行命令ANALYZE TABLE COMPUTE statistics noscan的配置单元存储表,和直接根据数据文件计算统计信息的基于文件的数据源表。

    spark.sql.shuffle.partitions

    200

    为连接或聚合过滤数据时使用的默认分区数。

    spark.sql.dynamicPartitionOverwrite.enabled

    false

    当前配置设置为“false”时,DLI在覆盖写之前,会删除所有符合条件的分区。例如,分区表中有一个“2021-01”的分区,当使用INSERT OVERWRITE语句向表中写入“2021-02”这个分区的数据时,会把“2021-01”的分区数据也覆盖掉。

    当前配置设置为“true”时,DLI不会提前删除分区,而是在运行时覆盖那些有数据写入的分区。

    spark.sql.files.maxPartitionBytes

    134217728

    读取文件时要打包到单个分区中的最大字节数。

    spark.sql.badRecordsPath

    -

    Bad Records的路径。

    dli.sql.sqlasync.enabled

    true

    DDL和DCL语句是否异步执行,值为“true”时启用异步执行。

    dli.sql.job.timeout

    -

    设置作业运行超时时间,超时取消。单位:秒。

  • 跳转至SparkUI查看SQL语句执行进程

    SQL编辑器页面提供了跳转至SparkUI查看SQL语句执行进程的功能。

    • 目前DLI配置SparkUI只展示最新的100条作业信息。
    • default队列下运行的作业或者该作业为同步作业时不支持跳转至SparkUI查看SQL语句执行进程。

    新建队列,运行作业时会重新拉集群,大概需要10分钟左右才能拉好集群,在集群创建好之前单击SparkUI会导致缓存空的projectID,从而导致无法查看SparkUI。建议使用专属队列,集群不会被释放,就不会有该问题,或者提交作业后等一段时间再查看SparkUI,确保集群已经拉好了,不要立即单击SparkUI。

  • 归档SQL运行日志

    单击SQL编辑器页面,执行历史中SQL作业操作列下的“更多 > 归档日志”,系统自动跳转至日志存储的OBS路径。您可以按需下载对应的日志使用。

    default队列下运行的作业或者该作业为同步作业时不支持归档日志操作。

  • SQL编辑器快捷功能
    表3 快捷键说明

    快捷键

    描述

    Ctrl+Enter

    执行SQL。通过按下键盘上的Ctrl+R或Ctrl + Enter,您可以执行SQL语句。

    Ctrl+F

    搜索SQL。通过按下键盘上的Ctrl + F,您可以搜索需要的SQL语句。

    Shift+Alt+F

    格式化SQL。通过按下键盘上的Shift+Alt+F,您可以将SQL语句格式化。

    Ctrl+Q

    语法校验。通过按下键盘上的Ctrl + Q,您可以对SQL语句进行语法校验。

    F11

    全屏。通过按下键盘上的F11,您可将SQL作业编辑器窗口全屏。再次按下F11,将从全屏复原。

相关文档