- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- 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资源后,如果您需要给企业中的员工设置不同的访问权限,以达到不同员工之间的权限隔离,可以使用统一身份认证服务(Identity and Access Management,简称IAM)进行精细的权限管理。该服务提供用户身份认证、权限分配、访问控制等功能,可以帮助您安全地控制华为云资源的访问。
通过IAM,您可以在账号中给员工创建IAM用户,并使用策略来控制他们对华为云资源的访问范围。例如您的员工中有负责软件开发的人员,您希望他们拥有DLI的使用权限,但是不希望他们拥有删除DLI等高危操作的权限,那么您可以使用IAM为开发人员创建用户,通过授予仅能使用DLI,但是不允许删除DLI的权限策略,控制他们对DLI资源的使用范围。
如果账号已经能满足您的需求,不需要创建独立的IAM用户进行权限管理,您可以跳过本章节,不影响您使用DLI服务的其他功能。
IAM是华为云提供权限管理的基础服务,无需付费即可使用,您只需要为您账号中的资源进行付费。关于IAM的详细介绍,请参见《IAM产品介绍》。
DLI权限
默认情况下,管理员创建的IAM用户没有任何权限,您需要将其加入用户组,并给用户组授予策略或角色,才能使得该用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。
DLI部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域对应的项目中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问DLI时,需要先切换至授权区域。
- 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。
- 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对DLI服务,管理员能够控制IAM用户仅能对某一类云服务器资源进行指定的管理操作。DLI支持的API授权项请参见《权限策略和授权项》。
系统角色/策略名称 |
描述 |
类别 |
依赖关系 |
---|---|---|---|
DLI FullAccess |
数据湖探索所有权限。 |
系统策略 |
该角色有依赖,需要在同项目中勾选依赖的角色:
|
DLI ReadOnlyAccess |
数据湖探索只读权限。 只读权限可控制部分开放的、未鉴权的DLI资源和操作。例如创建全局变量、创建程序包以及程序包组、default队列提交作业、default数据库下建表、创建跨源连接、删除跨源连接等操作。 |
系统策略 |
无 |
Tenant Administrator |
租户管理员。
|
系统角色 |
无 |
DLI Service Administrator |
数据湖探索管理员。
|
系统角色 |
无 |
表2列出了DLI SQL常用操作与系统权限的授权关系,您可以参照该表选择合适的系统策略。
更多SQL语法赋权请参考《数据湖探索SQL语法参考》> 《数据控制》>《权限列表》章节。
资源 |
操作 |
说明 |
DLI FullAccess |
DLI ReadOnlyAccess |
Tenant Administrator |
DLI Service Administrator |
---|---|---|---|---|---|---|
队列 |
DROP_QUEUE |
删除队列 |
√ |
× |
√ |
√ |
SUBMIT_JOB |
提交作业 |
√ |
× |
√ |
√ |
|
CANCEL_JOB |
终止作业 |
√ |
× |
√ |
√ |
|
RESTART |
重启队列 |
√ |
× |
√ |
√ |
|
GRANT_PRIVILEGE |
队列的赋权 |
√ |
× |
√ |
√ |
|
REVOKE_PRIVILEGE |
队列权限的回收 |
√ |
× |
√ |
√ |
|
SHOW_PRIVILEGES |
查看其他用户具备的队列权限 |
√ |
× |
√ |
√ |
|
数据库 |
DROP_DATABASE |
删除数据库 |
√ |
× |
√ |
√ |
CREATE_TABLE |
创建表 |
√ |
× |
√ |
√ |
|
CREATE_VIEW |
创建视图 |
√ |
× |
√ |
√ |
|
EXPLAIN |
将SQL语句解释为执行计划 |
√ |
× |
√ |
√ |
|
CREATE_ROLE |
创建角色 |
√ |
× |
√ |
√ |
|
DROP_ROLE |
删除角色 |
√ |
× |
√ |
√ |
|
SHOW_ROLES |
显示角色 |
√ |
× |
√ |
√ |
|
GRANT_ROLE |
绑定角色 |
√ |
× |
√ |
√ |
|
REVOKE_ROLE |
解除角色绑定 |
√ |
× |
√ |
√ |
|
SHOW_USERS |
显示所有角色和用户的绑定关系 |
√ |
× |
√ |
√ |
|
GRANT_PRIVILEGE |
数据库的赋权 |
√ |
× |
√ |
√ |
|
REVOKE_PRIVILEGE |
数据库权限的回收 |
√ |
× |
√ |
√ |
|
SHOW_PRIVILEGES |
查看其他用户具备的数据库权限 |
√ |
× |
√ |
√ |
|
DISPLAY_ALL_TABLES |
显示数据库中的表 |
√ |
√ |
√ |
√ |
|
DISPLAY_DATABASE |
显示数据库 |
√ |
√ |
√ |
√ |
|
CREATE_FUNCTION |
创建函数 |
√ |
× |
√ |
√ |
|
DROP_FUNCTION |
删除函数 |
√ |
× |
√ |
√ |
|
SHOW_FUNCTIONS |
显示所有函数 |
√ |
× |
√ |
√ |
|
DESCRIBE_FUNCTION |
显示函数详情 |
√ |
× |
√ |
√ |
|
表 |
DROP_TABLE |
删除表 |
√ |
× |
√ |
√ |
SELECT |
查询表 |
√ |
× |
√ |
√ |
|
INSERT_INTO_TABLE |
插入 |
√ |
× |
√ |
√ |
|
ALTER_TABLE_ADD_COLUMNS |
添加列 |
√ |
× |
√ |
√ |
|
INSERT_OVERWRITE_TABLE |
重写 |
√ |
× |
√ |
√ |
|
ALTER_TABLE_RENAME |
重命名表 |
√ |
× |
√ |
√ |
|
ALTER_TABLE_ADD_PARTITION |
在分区表中添加分区 |
√ |
× |
√ |
√ |
|
ALTER_TABLE_RENAME_PARTITION |
重命名表分区 |
√ |
× |
√ |
√ |
|
ALTER_TABLE_DROP_PARTITION |
删除分区表的分区 |
√ |
× |
√ |
√ |
|
SHOW_PARTITIONS |
显示所有分区 |
√ |
× |
√ |
√ |
|
ALTER_TABLE_RECOVER_PARTITION |
恢复表分区 |
√ |
× |
√ |
√ |
|
ALTER_TABLE_SET_LOCATION |
设置分区路径 |
√ |
× |
√ |
√ |
|
GRANT_PRIVILEGE |
表的赋权 |
√ |
× |
√ |
√ |
|
REVOKE_PRIVILEGE |
表权限的回收 |
√ |
× |
√ |
√ |
|
SHOW_PRIVILEGES |
查看其他用户具备的表权限 |
√ |
× |
√ |
√ |
|
DISPLAY_TABLE |
显示表 |
√ |
√ |
√ |
√ |
|
DESCRIBE_TABLE |
显示表信息 |
√ |
× |
√ |
√ |
|
弹性资源池 |
DROP |
删除弹性资源池 |
√ |
× |
√ |
√ |
RESOURCE_MANAGEMENT |
弹性资源池资源管理 |
√ |
× |
√ |
√ |
|
SCALE |
扩缩容弹性资源池 |
√ |
× |
√ |
√ |
|
UPDATE |
更新弹性资源池 |
√ |
× |
√ |
√ |
|
CREATE |
创建弹性资源池 |
√ |
× |
√ |
√ |
|
SHOW_PRIVILEGES |
查看其他用户具备的弹性资源池权限 |
√ |
× |
√ |
√ |
|
GRANT_PRIVILEGE |
赋予指定用户弹性资源池权限 |
√ |
× |
√ |
√ |
|
REVOKE_PRIVILEGE |
移除指定用户弹性资源池权限 |
√ |
× |
√ |
√ |
|
增强型跨源连接 |
BIND_QUEUE |
增强型跨源连接绑定队列 仅用于跨项目授权。 |
× |
× |
× |
× |
如果系统策略不满足授权要求,管理员可以创建自定义策略,并通过给用户组授予自定义策略来进行精细的访问控制,自定义策略是对系统策略的扩展和补充。详细操作请参考创建自定义策略。
相关链接
- 《IAM产品介绍》
- 《创建用户组、用户并授予DLI权限》
- 《策略语法》
- 《如何修改用户策略》
- 《队列赋权》(API赋权)
- 《数据赋权》(API赋权)
- 《设置队列权限》(Console赋权)
- 《数据库权限管理》(Console赋权)
- 《表权限管理》(Console赋权)