- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- DLI作业开发流程
- 准备工作
- 创建弹性资源池和队列
- 创建数据库和表
- 数据迁移与数据传输
- 配置DLI访问其他云服务的委托权限
- 使用DLI提交SQL作业
- 使用DLI提交Flink作业
- 使用DLI提交Spark作业
- 使用Notebook实例提交DLI作业
- 使用CES监控DLI服务
- 使用AOM监控DLI服务
- 使用CTS审计DLI服务
- 权限管理
- DLI常用管理操作
- 最佳实践
-
开发指南
- 使用客户端工具连接DLI
- SQL作业开发指南
- Flink作业开发指南
- Spark Jar作业开发指南
-
语法参考
-
Spark SQL语法参考
- Spark SQL常用配置项说明
- Spark SQL语法概览
- Spark开源命令支持说明
- 数据库相关
- 表相关
- 数据相关
- 导出查询结果
- 跨源连接相关
- 视图相关
- 查看计划
- 数据权限相关
- 数据类型
- 自定义函数
-
内置函数
-
日期函数
- 日期函数概览
- add_months
- current_date
- current_timestamp
- date_add
- dateadd
- date_sub
- date_format
- datediff
- datediff1
- datepart
- datetrunc
- day/dayofmonth
- from_unixtime
- from_utc_timestamp
- getdate
- hour
- isdate
- last_day
- lastday
- minute
- month
- months_between
- next_day
- quarter
- second
- to_char
- to_date
- to_date1
- to_utc_timestamp
- trunc
- unix_timestamp
- weekday
- weekofyear
- year
-
字符串函数
- 字符串函数概览
- ascii
- concat
- concat_ws
- char_matchcount
- encode
- find_in_set
- get_json_object
- instr
- instr1
- initcap
- keyvalue
- length
- lengthb
- levenshtein
- locate
- lower/lcase
- lpad
- ltrim
- parse_url
- printf
- regexp_count
- regexp_extract
- replace
- regexp_replace
- regexp_replace1
- regexp_instr
- regexp_substr
- repeat
- reverse
- rpad
- rtrim
- soundex
- space
- substr/substring
- substring_index
- split_part
- translate
- trim
- upper/ucase
- 数学函数
- 聚合函数
- 分析窗口函数
- 其他函数
-
日期函数
- SELECT
-
标示符
- aggregate_func
- alias
- attr_expr
- attr_expr_list
- attrs_value_set_expr
- boolean_expression
- class_name
- col
- col_comment
- col_name
- col_name_list
- condition
- condition_list
- cte_name
- data_type
- db_comment
- db_name
- else_result_expression
- file_format
- file_path
- function_name
- groupby_expression
- having_condition
- hdfs_path
- input_expression
- input_format_classname
- jar_path
- join_condition
- non_equi_join_condition
- number
- num_buckets
- output_format_classname
- partition_col_name
- partition_col_value
- partition_specs
- property_name
- property_value
- regex_expression
- result_expression
- row_format
- select_statement
- separator
- serde_name
- sql_containing_cte_name
- sub_query
- table_comment
- table_name
- table_properties
- table_reference
- view_name
- view_properties
- when_expression
- where_condition
- window_function
- 运算符
-
Flink SQL语法参考
- Flink Opensource SQL1.15语法参考
- Flink Opensource SQL1.12语法参考
- Flink Opensource SQL1.10语法参考
-
HetuEngine SQL语法参考
-
HetuEngine SQL语法
- 使用前必读
- 数据类型
-
DDL 语法
- CREATE SCHEMA
- CREATE TABLE
- CREATE TABLE AS
- CREATE TABLE LIKE
- CREATE VIEW
- ALTER TABLE
- ALTER VIEW
- ALTER SCHEMA
- DROP SCHEMA
- DROP TABLE
- DROP VIEW
- TRUNCATE TABLE
- COMMENT
- VALUES
- SHOW语法使用概要
- SHOW SCHEMAS(DATABASES)
- SHOW TABLES
- SHOW TBLPROPERTIES TABLE|VIEW
- SHOW TABLE/PARTITION EXTENDED
- SHOW FUNCTIONS
- SHOW PARTITIONS
- SHOW COLUMNS
- SHOW CREATE TABLE
- SHOW VIEWS
- SHOW CREATE VIEW
- DML 语法
- DQL 语法
- 辅助命令语法
- 预留关键字
- SQL函数和操作符
- 数据类型隐式转换
- 附录
-
HetuEngine SQL语法
- Hudi SQL语法参考
- Delta SQL语法参考
-
Spark SQL语法参考
-
API参考
- API使用前必读
- API概览
- 如何调用API
- API快速入门
- 权限相关API
- 全局变量相关API
- 资源标签相关API
- 增强型跨源连接相关API
- 跨源认证相关API
- 弹性资源池相关API
- 队列相关API(推荐)
- SQL作业相关API
- SQL模板相关API
- Flink作业相关API
- Flink作业模板相关API
- Flink作业管理相关API
- Spark作业相关API
- Spark作业模板相关API
- 权限策略和授权项
- 历史API
- 公共参数
- SDK参考
- 场景代码示例
-
常见问题
- DLI产品咨询类
- DLI弹性资源池和队列类
-
DLI数据库和表类
- 为什么在DLI控制台中查询不到表?
- OBS表压缩率较高怎么办?
- 字符码不一致导致数据乱码怎么办?
- 删除表后再重新创建同名的表,需要对操作该表的用户和项目重新赋权吗?
- DLI分区内表导入的文件不包含分区列的数据,导致数据导入完成后查询表数据失败怎么办?
- 创建OBS外表,由于OBS文件中的某字段存在换行符导致表字段数据错误怎么办?
- join表时没有添加on条件,造成笛卡尔积查询,导致队列资源爆满,作业运行失败怎么办?
- 手动在OBS表的分区目录下添加了数据,但是无法查询到数据怎么办?
- 为什么insert overwrite覆盖分区表数据的时候,覆盖了全量数据?
- 跨源连接RDS表中create_date字段类型是datetime,为什么DLI中查出来的是时间戳呢?
- SQL作业执行完成后,修改表名导致datasize不正确怎么办?
- 从DLI导入数据到OBS,数据量不一致怎么办?
-
增强型跨源连接类
- 增强型跨源连接绑定队列失败怎么办?
- DLI增强型跨源连接DWS失败怎么办?
- 创建跨源成功但测试网络连通性失败怎么办?
- 怎样配置DLI队列与数据源的网络连通?
- 为什么DLI增强型跨源连接要创建对等连接?
- DLI创建跨源连接,绑定队列一直在创建中怎么办?
- 新建跨源连接,显示已激活,但使用时提示communication link failure错误怎么办?
- 跨源访问MRS HBase,连接超时,日志未打印错误怎么办?
- DLI跨源连接报错找不到子网怎么办?
- 跨源RDS表,执行insert overwrite提示Incorrect string value错误怎么办?
- 创建RDS跨源表提示空指针错误怎么办?
- 对跨源DWS表执行insert overwrite操作,报错:org.postgresql.util.PSQLException: ERROR: tuple concurrently updated
- 通过跨源表向CloudTable Hbase表导入数据,executor报错:RegionTooBusyException
- 通过DLI跨源写DWS表,非空字段出现空值异常怎么办?
- 更新跨源目的端源表后,未同时更新对应跨源表,导致insert作业失败怎么办?
- RDS表有自增主键时怎样在DLI插入数据?
-
SQL作业类
- SQL作业开发类
-
SQL作业运维类
- 用户导表到OBS报“path obs://xxx already exists”错误
- 对两个表进行join操作时,提示:SQL_ANALYSIS_ERROR: Reference 't.id' is ambiguous, could be: t.id, t.id.;
- 执行查询语句报错:The current account does not have permission to perform this operation,the current account was restricted. Restricted for no budget.
- 执行查询语句报错:There should be at least one partition pruning predicate on partitioned table XX.YYY
- LOAD数据到OBS外表报错:IllegalArgumentException: Buffer size too small. size
- SQL作业运行报错:DLI.0002 FileNotFoundException
- 用户通过CTAS创建hive表报schema解析异常错误
- 在DataArts Studio上运行DLI SQL脚本,执行结果报org.apache.hadoop.fs.obs.OBSIOException错误
- 使用CDM迁移数据到DLI,迁移作业日志上报UQUERY_CONNECTOR_0001:Invoke DLI service api failed错误
- SQL作业访问报错:File not Found
- SQL作业访问报错:DLI.0003: AccessControlException XXX
- SQL作业访问外表报错:DLI.0001: org.apache.hadoop.security.AccessControlException: verifyBucketExists on {{桶名}}: status [403]
- 执行SQL语句报错:The current account does not have permission to perform this operation,the current account was restricted. Restricted for no budget.
-
Flink作业类
- Flink作业咨询类
-
Flink SQL作业类
- 怎样将OBS表映射为DLI的分区表?
- Flink SQL作业Kafka分区数增加或减少,怎样不停止Flink作业实现动态感知?
- 在Flink SQL作业中创建表使用EL表达式,作业运行提示DLI.0005错误怎么办?
- Flink作业输出流写入数据到OBS,通过该OBS文件路径创建的DLI表查询无数据
- Flink SQL作业运行失败,日志中有connect to DIS failed java.lang.IllegalArgumentException: Access key cannot be null错误
- Flink SQL作业消费Kafka后sink到es集群,作业执行成功,但未写入数据
- Flink Opensource SQL如何解析复杂嵌套 JSON?
- Flink Opensource SQL从RDS数据库读取的时间和RDS数据库存储的时间为什么会不一致?
- Flink Opensource SQL Elasticsearch结果表failure-handler参数填写retry_rejected导致提交失败
- Kafka Sink配置发送失败重试机制
- 如何在一个Flink作业中将数据写入到不同的Elasticsearch集群中?
- 作业语义检验时提示DIS通道不存在怎么处理?
- Flink jobmanager日志一直报Timeout expired while fetching topic metadata怎么办?
- Flink Jar作业类
- Flink作业性能调优类
-
Spark作业相类
- Spark作业开发类
-
Spark作业运维类
- 运行Spark作业报java.lang.AbstractMethodError
- Spark作业访问OBS数据时报ResponseCode: 403和ResponseStatus: Forbidden错误
- 有访问OBS对应的桶的权限,但是Spark作业访问时报错 verifyBucketExists on XXXX: status [403]
- Spark作业运行大批量数据时上报作业运行超时异常错误
- 使用Spark作业访问sftp中的文件,作业运行失败,日志显示访问目录异常
- 执行作业的用户数据库和表权限不足导致作业运行失败
- 为什么Spark3.x的作业日志中打印找不到global_temp数据库
- 在使用Spark2.3.x访问元数据时,DataSource语法创建avro类型的OBS表创建失败
- DLI资源配额类
- DLI权限管理类
- DLI API类
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
DLI弹性资源池与队列简介
DLI的计算资源是执行作业的基础,本节内容介绍DLI计算资源的模式和队列类型。
什么是弹性资源池和队列?
在了解DLI计算资源模式前首先了解弹性资源池和队列的基本概念。
- 弹性资源池是DLI计算资源的一种池化管理模式,可以看做DLI计算资源的集合。DLI支持在弹性资源池中创建多个队列,且这些队列可以共享弹性资源池中的资源。
- 队列是DLI中被实际使用和分配的基本单元,即队列是执行作业所需的具体的计算资源。您可以为不同的作业或数据处理任务创建不同的队列,并按需对这些队列分配和调整资源。了解DLI的队列类型请参考DLI队列类型。
DLI弹性资源池之间为物理集群隔离,同一个弹性资源池中的队列之间为逻辑隔离。
建议您对测试业务场景和生产业务场景分别创建弹性资源池,通过资源物理隔离的方式,保障资源管理的独立性和安全性。
DLI计算资源模式
DLI提供了三种计算资源的管理模式,每一种模式都有独特的优势和适用场景。

- 弹性资源池模式:计算资源的池化管理模式,提供计算资源的动态扩缩容能力,同一弹性资源池中的队列共享计算资源。通过合理设置队列的计算资源分配策略,可以提高计算资源利用率,应对业务高峰期的资源需求。
- 适用场景:适合业务量有明显波动的场合,如周期性的数据批处理任务或实时数据处理需求。
- 支持的队列类型:SQL队列(Spark)、SQL队列(HetuEngine)、通用队列。了解DLI的队列类型请参考DLI队列类型。
说明:
弹性资源池模式的通用队列和SQL队列不支持跨可用区。
- 使用方法:先创建弹性资源池,然后在弹性资源池中创建队列并分配计算资源,队列关联到具体的作业和数据处理任务。
购买弹性资源池并在弹性资源池中添加队列的具体操作步骤请参考创建弹性资源池并添加队列。
- 全局共享模式:
全局共享模式是一种根据SQL查询中实际扫描的数据量来分配计算资源的模式,不支持指定或预留计算资源。
DLI服务预置的“default”队列即为全局共享模式的计算资源,资源的大小是按需分配的。在不确定数据量大小或偶尔需要进行数据处理的用户,可以使用default队列执行作业。
- 非弹性资源池模式(废弃,不推荐使用):
DLI的上一代计算资源管理方式,因缺乏灵活性,目前已不推荐使用。
非弹性资源池模式提供固定规格的计算资源,购买后独占资源,无法根据需求动态调整,可能会导致资源浪费或在需求高峰期资源不足。
DLI计算资源模式 |
支持的队列类型 |
资源特点 |
适用场景 |
---|---|---|---|
弹性资源池模式 |
SQL队列(Spark) SQL队列(HetuEngine) 通用队列 |
单用户多队列共享资源 资源动态分配,灵活调整 |
适合业务需求波动较大,需要灵活调整资源以应对波峰波谷的业务场景。 |
全局共享模式 |
default队列 |
多用户多队列共享资源 按量付费,不支持预留资源 |
适合不确定数据量大小或仅需要偶尔进行数据处理的临时或测试项目场景。 |
非弹性资源池模式 (废弃,不推荐使用) |
SQL队列 通用队列 |
单用户单队列独享资源 无法动态调整,资源可能会闲置 |
废弃,不推荐使用 |
为了方便您理解DLI不同计算资源模式的适用场景,我们把购买DLI计算资源比作用车服务:
- 弹性资源池模式可以比作“租车”,您可以根据实际需求动态调整资源的规模。
- 全局共享模式可以比作“打车”,您只需为实际使用的数据量付费。
弹性资源池扩缩容
当弹性资源池中添加队列、删除队列时,会触发弹性资源扩缩容。
而弹性资源池缩容可能会触发缩容含有shuffle数据的节点,会导致Spark Task重算,引起Spark作业和SQL作业内部自动重试,当作业重试超过限制会导致作业执行失败,需用户重新执行作业。
- Spark2.3版本作业需要升级作业版本后才能支持运行中动态缩容功能。
- Spark Streaming作业、Flink作业在运行过程中所在节点无法缩容,需要暂停作业或迁移作业至其他弹性资源池后才能完成缩容。
DLI队列类型
DLI分为三种队列类型: default队列、SQL队列、通用队列,您可以根据业务场景和作业特性选择最合适的队列类型。
- default队列:
DLI服务预置的队列,所有用户共享。
不支持指定default队列资源大小,资源在执行作业时按需分配,并按实际扫描的数据量计费。
由于default队列是共享资源,在使用时可能会出现资源抢占的情况,不能保证每次都能获得资源来执行作业。
default队列适用小规模或临时的数据处理需求。对于重要的或需要保证资源的作业,建议购买弹性资源池并在弹性资源池中创建队列来执行作业。
- SQL队列:
SQL队列是用于执行SQL作业的队列,支持指定引擎类型包括Spark和HetuEngine。
SQL队列适用于需要快速数据查询和分析,以及需要定期清理缓存或重置环境的业务。
- 通用队列:
通用队列用于执行Spark作业、Flink OpenSource SQL作业和Flink Jar作业的队列。
适合适用于复杂数据处理、实时数据流处理或批量数据处理的场景。
弹性资源池使用场景
推荐使用弹性资源池队列,提高资源使用的灵活性和资源利用效率。本节介绍常见的弹性资源池的使用场景。
场景一:固定资源造成资源浪费和资源不足的场景
在每天的不同时段,作业任务对资源的请求量也会发生变化,如果采用固定资源规格则会导致资源浪费或者资源不足的问题。例如,如下图图2示例可以看出:
- 大约在凌晨4点到7点这个数据段,ETL作业任务结束后没有其他作业,因为资源固定一直占用,导致严重的资源浪费。
- 上午9点到12点以及下午14点16点的两个时段,ETL报表和作业查询的请求量很高,因为当前固定资源不够,导致作业任务排队,任务一直排队。
场景二:资源相互隔离,没有共享,造成资源浪费的场景

弹性资源池通过“分时按需弹性”功能,支持按照不同时间段对资源进行动态的扩缩容,保证资源的利用率和应对资源洪峰等诉求。
弹性资源池对后端资源统一进行管理和调度,多个队列绑定弹性资源池后,资源池内资源共享,资源利用率高,解决了场景二的问题。