
# DLI SQL
#### 功能
通过DLI SQL节点传递SQL语句到DLI SQL中执行，实现多数据源分析探索。DLI SQL适用于使用标准SQL语句进行查询的场景。通常用于结构化数据的查询和分析。
#### 原理
该节点方便用户在数据开发模块的周期与实时调度中执行DLI相关语句，可以使用参数变量为用户的数仓进行增量导入，分区处理等动作。
#### 参数
用户可参考[表1]，[表2]和[表3]配置DLI SQL节点的参数。
 表1属性参数 
| 参数      | 是否必选 | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|
| 节点名称    | 是    | 默认显示为SQL脚本的名称，支持修改。规则如下： 节点名称，可以包含中文、英文字母、数字、"_"、"-"、"/"、"\<"、"\>"等各类特殊字符，长度为1～128个字符。 默认情况下，节点名称会与选择的脚本名称保持同步。若不需要节点名称和脚本名称同步，请参考[禁用作业节点名称同步变化](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_04501.html#dataartsstudio_01_04501__section67661828112219)禁用该功能。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| SQL或脚本  | 是    | 可以选择SQL语句或SQL脚本。 - SQL语句 单击"SQL语句"参数下的文本框，在"SQL语句"页面输入需要执行的SQL语句。   - SQL脚本 在"SQL脚本"参数后选择需要执行的脚本。如果脚本未创建，请参考[新建脚本](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0423.html)和[开发SQL脚本](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0424.html)先创建和开发脚本。 说明： 若选择SQL语句方式，数据开发模块将无法解析您输入SQL语句中携带的参数。 脚本传递参数给作业节点时，参数数量最多不能超过50个，参数名长度不能超过64个字符，且参数值长度不能超过256个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| DLI数据目录 | 否    | 选择DLI的数据目录。 - 在DLI默认的数据目录dli。  - 在DLI所绑定的LakeFormation已创建元数据catalog。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 数据库名称   | 是    | 选择数据库。 选择SQL脚本时： 默认选择SQL脚本中设置的数据库，支持修改。 选择SQL语句时： - DLI数据目录如果选择DLI默认的数据目录dli，表示为DLI的数据库和数据表。  - DLI数据目录如果选择DLI所绑定的LakeFormation已创建元数据catalog，表示为LakeFormation的数据库和数据表。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| DLI环境变量 | 否    | - 环境变量配置项需要以"hoodie."或"dli.sql."或"dli.ext."或"dli.jobs."或"spark.sql."或"spark.scheduler.pool"开头。  - 环境变量的key为dli.sql.shuffle.partitions或dli.sql.autoBroadcastJoinThreshold时，不能包含\>\<符号。  - 环境变量的key为dli.sql.autoBroadcastJoinThreshold的值只能为整数，环境变量的key为dli.sql.shuffle.partitions的值只能为正整数。  - 如果作业和脚本中同时配置了同名的参数，作业中配置的值会覆盖脚本中的值。 说明： 用户定义适用于此作业的配置参数。目前支持的配置项： - dli.sql.autoBroadcastJoinThreshold（自动使用BroadcastJoin的数据量阈值）  - dli.sql.shuffle.partitions（指定Shuffle过程中Partition的个数）  - dli.sql.cbo.enabled（是否打开CBO优化策略）  - dli.sql.cbo.joinReorder.enabled（开启CBO优化时，是否允许重新调整join的顺序）  - dli.sql.multiLevelDir.enabled（OBS表的指定目录或OBS表分区表的分区目录下有子目录时，是否查询子目录的内容；默认不查询）  - dli.sql.dynamicPartitionOverwrite.enabled（在动态分区模式时，只会重写查询中的数据涉及的分区，未涉及的分区不删除）      |
| 队列名称    | 是    | 默认选择SQL脚本中设置的DLI队列，支持修改。 如需新建资源队列，请参考以下方法： - 单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000001076498785.png)，进入DLI的"队列管理"页面新建资源队列。  - 前往DLI管理控制台进行新建。   说明： - 当子用户在创建作业时，子用户只能选择已经被分配的队列。  - 当前由于DLI的"default"队列默认Spark组件版本较低，可能会出现无法支持建表语句执行的报错，这种情况下建议您选择自建队列运行业务。如需"default"队列支持建表语句执行，可联系DLI服务客服或技术支持人员协助解决。  - DLI的"default"队列为共享队列，仅用于用户体验，用户间可能会出现抢占资源的情况，不能保证每次都可以得到资源执行相关操作。当遇到执行时间较长或无法执行的情况，建议您在业务低峰期再次重试，或选择自建队列运行业务。                                                         |
| 脚本参数    | 否    | 关联的SQL脚本如果使用了参数，此处显示参数名称，请在参数名称后的输入框配置参数值。参数值支持使用[EL表达式](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0494.html)。 若关联的SQL脚本，脚本参数发生变化，可单击刷新按钮![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0235751595.png)同步。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| 是否记录脏数据 | 是    | 单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0235751596.png)选择节点是否记录脏数据。 - 是：记录脏数据  - 否：不记录脏数据 说明： 脏数据即Bad Records，由于数据类型不兼容、数据为空或者格式不兼容而导致无法加载到DLI中的记录归类为Bad Records。 选择记录脏数据后，Bad Records不会导入到目标表，而是导入到OBS脏数据路径中。 - 如果未配置工作空间中的DLI脏数据OBS路径，则默认会把DLI SQL执行过程中的脏数据写到dlf-log-{projectId}桶中。  - 若要自定义DLI脏数据日志路径，请前往空间管理进行编辑操作。详细操作请参见[配置OBS桶](https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_1106.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   
 表2高级参数 
| 参数               | 是否必选 | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|
| 节点状态轮询时间（秒）      | 是    | 设置轮询时间（1\~60秒），每隔x秒查询一次节点是否执行完成。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 节点执行的最长时间        | 是    | 设置节点执行的超时时间，如果节点配置了重试，在超时时间内未执行完成，该节点将会再次重试。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| 失败重试             | 是    | 节点执行失败后，是否重新执行节点。 - 是：重新执行节点，请配置以下参数。 - 超时重试  - 最大重试次数  - 重试间隔时间（秒）    - 否：默认值，不重新执行节点。 说明： 如果作业节点配置了重试，并且配置了超时时间，该节点执行超时后，系统支持再重试。 当节点运行超时导致的失败不会重试时，您可前往"默认项设置"修改此策略。 当"失败重试"配置为"是"才显示"超时重试"。    |
| 当前节点失败后，后续节点处理策略 | 是    | 节点执行失败后的操作： - 终止后续节点执行计划：停止后续节点的运行，当前作业实例状态显示为"失败"。  - 终止当前作业执行计划：停止当前作业运行，当前作业实例状态显示为"失败"。  - 继续执行下一节点：忽略当前节点失败，当前作业实例状态显示为"忽略失败"。  - 挂起当前作业执行计划：当前作业实例的状态为运行异常，该节点的后续节点以及依赖于当前作业的后续作业实例都会处于等待运行状态。                                                                                                                                                                                                                                                                                                                                                                                                                  |
| 是否空跑             | 否    | 如果勾选了空跑，该节点不会实际执行，将直接返回成功。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 任务组              | 否    | 选择任务组。任务组配置好后，可以更细粒度地进行当前任务组中的作业节点的并发数控制，比如作业中包含多个节点、补数据、重跑等场景。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   
 表3血缘关系 
| 参数    | 说明                                                                                                                   |
|:---|:---|
| **输入**                                                                                                                      ||
| 新建    | 单击"新建"，在"类型"的下拉选项中选择要新建的类型。可以选择DWS，OBS，CSS，HIVE，CUSTOM和DLI类型。                                                        |
| 确定    | 单击"确认"，保存节点输入功能的参数配置。                                                                                                |
| 取消    | 单击"取消"，取消节点输入功能的参数配置。                                                                                                |
| 编辑    | 单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0253079518.png)，修改节点输入功能的参数配置，修改完成后，请保存。 |
| 删除    | 单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0253079519.png)，删除节点输入功能的参数配置。           |
| 查看表详情 | 单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0253079520.png)，查看节点输入血缘关系创建数据表的详细信息。    |
| **输出**                                                                                                                      ||
| 新建    | 单击"新建"，在"类型"的下拉选项中选择要新建的类型。可以选择DWS，OBS，CSS，HIVE，CUSTOM，CloudTable和DLI类型。                                             |
| 确定    | 单击"确认"，保存节点输出功能的参数配置。                                                                                                |
| 取消    | 单击"取消"，取消节点输出功能的参数配置。                                                                                                |
| 编辑    | 单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0253079533.png)，修改节点输出功能的参数配置，修改完成后，请保存。 |
| 删除    | 单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0253079534.png)，删除节点输出功能的参数配置。           |
| 查看表详情 | 单击![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0253079536.png)，查看节点输出血缘关系创建数据表的详细信息。    |
   
