数据湖探索 DLI-提交SQL作业(推荐):请求消息

时间:2024-11-11 14:11:13

请求消息

表2 请求参数

参数名称

是否必选

参数类型

说明

sql

String

待执行的SQL语句。

currentdb

String

SQL语句执行所在的数据库。当创建新数据库时,不需要提供此参数。

current_catalog

String

待提交作业的表的默认catalog。不填时默认使用 DLI catalog。

queue_name

String

待提交作业的队列名称,名称只能包含数字、英文字母和下划线,但不能是纯数字,且不能以下划线开头。

conf

Array of Strings

用户以“key/value”的形式设置用于此作业的配置参数。目前支持的配置项请参考表3

tags

Array of Objects

作业的标签。具体请参考表4

engine_type

String

选择执行作业的引擎类型。

表3 conf参数说明

参数名称

默认值

描述

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的路径。

spark.sql.legacy.correlated.scalar.query.enabled

false

  • 该参数设置为true:
    • 当子查询中数据不重复的情况下,执行关联子查询,不需要对子查询的结果去重。
    • 当子查询中数据重复的情况下,执行关联子查询,会提示异常,必须对子查询的结果做去重处理,比如max(),min()。
  • 该参数设置为false:

    不管子查询中数据重复与否,执行关联子查询时,都需要对子查询的结果去重,比如max(),min(),否则提示异常。

dli.jobs.sql.resubmit.enable

null

通过设置该参数可以控制在driver故障、队列重启时Spark SQL作业是否重新提交。

  • false:禁用作业重试,所有类型的命令都不重新提交,一旦driver故障,作业将标记为失败(FAILED)。
  • true:启用作业重试,即在driver故障时,所有类型的作业都将重新提交。
    注意:

    如果配置为true,在执行INSERT等幂等类型的操作时(例如insert into,load data、update),可能会导致数据一致性问题。即driver故障后作业重试,导致driver故障前已插入的数据被重复写入。

spark.sql.optimizer.dynamicPartitionPruning.enabled

true

该配置项用于启用或禁用动态分区修剪。在执行SQL查询时,动态分区修剪可以帮助减少需要扫描的数据量,提高查询性能。

  • 配置为true时,代表启用动态分区修剪,SQL会在查询中自动检测并删除那些不满足WHERE子句条件的分区,适用于在处理具有大量分区的表时。
  • 如果SQL查询中包含大量的嵌套left join操作,并且表有大量的动态分区时,这可能会导致在数据解析时消耗大量的内存资源,导致Driver节点的内存不足,并触发频繁的Full GC。

    在这种情况下,可以配置该参数为false即禁用动态分区修剪优化,有助于减少内存使用,避免内存溢出和频繁的Full GC。

    但禁用此优化可能会降低查询性能,禁用后Spark将不会自动修剪掉那些不满足条件的分区。

表4 tags参数

参数名称

是否必选

参数类型

说明

key

String

标签的键。

说明:

标签的键的最大长度为128个字符,标签的键可以包含任意语种字母、数字、空格和_ . : =+-@ ,但首尾不能含有空格,不能以_sys_开头。

value

String

说明:

标签值的最大长度为255个字符,标签的值可以包含任意语种字母、数字、空格和_ . : =+-@ ,但首尾不能含有空格。

support.huaweicloud.com/api-dli/dli_02_0102.html