DLA支持分区表的INSERT OVERWRITE

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
对象存储 OSS,20GB 3个月
简介: ![insert-vs-overwrite.jpg](https://ata2-img.cn-hangzhou.oss-pub.aliyun-inc.com/2cb3c0a8d7d3ea7a2468dfc154b93573.jpg) [DLA](https://www.aliyun.com/product/datalakeanalytics) 最近加入了对分区表insert overwrit

insert-vs-overwrite.jpg

DLA 最近加入了对分区表insert overwrite的支持,这篇文章给您介绍一下。

授权

DLA目前对用户的OSS文件是没有删除权限的,因为insert overwrite需要对分区表中的老数据进行删除,因此需要做有删除数据的权限,因此我们要进行一个授权, 这个授权分两步:

  1. 创建一个自定义授权策略。
  2. 把策略授权给DLA的角色。

创建一个自定义授权策略

首先我们访问阿里云RAM的权限策略管理页面, 点击"点击新建权限策略":

policies.png

输入策略名称,比如 DLADeleteOssObject , "配置模式"选择 脚本配置 , 贴入如下内容:

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "oss:DeleteObject"
            ],
            "Resource": "acs:oss:*:*:<your-bucket-name>/*",
            "Effect": "Allow"
        }
    ]
}

注意: 这里<your-bucket-name> 要换成你自己使用DLA过程中要用的bucket的名字。
如果你想更细粒度的控制DLA拥有的权限,你可以在这里填上运行DLA删除文件的具体OSS的完整路径 -- 这也是我们推荐的。

把策略授权给DLA的角色

打开RAM角色管理 页面,DLA使用的是一个名叫AliyunOpenAnalyticsAccessingOSSRole 的角色来访问用户的OSS,我们这一步需要把前面创建的策略授权给这个角色, 我们搜索 AliyunOpenAnalyticsAccessingOSSRole 找到这个角色:

search-dla-oss-role.png

点击角色名称上的链接进入详情页面,点击"添加权限":

click-add-privilege-button.png

筛选框里面选择”自定义策略“,找到前面创建的策略,完成授权。

complete-auth.png

Insert Overwrite!

权限授予完成之后,我们就可以来试一下了, 语法上跟普通的Insert Into类似,只要把INTO 换成OVERWRITE即可:

mysql> CREATE EXTERNAL TABLE `oss_demo`.`person_test` (
    -> `id` int,
    -> `name` string,
    -> `age` int
    -> )
    -> PARTITIONED BY (
    ->     dt string
    -> )
    -> STORED AS `PARQUET`
    -> LOCATION 'oss://test_bucket/datasets/oss_demo/person_test/'
    -> TBLPROPERTIES (
    ->     'auto.create.location' = 'true'
    -> );
Query OK, 0 rows affected (0.52 sec)

mysql> insert into person_test values (1, 'james', 10, '20190101');
+------+
| rows |
+------+
|    1 |
+------+
1 row in set (0.52 sec)

mysql> select * from person_test;
+------+-------+------+----------+
| id   | name  | age  | dt       |
+------+-------+------+----------+
|    1 | james |   10 | 20190101 |
+------+-------+------+----------+
1 row in set (0.15 sec)

mysql> insert into person_test values (2, 'bond', 20, '20190101');
+------+
| rows |
+------+
|    1 |
+------+
1 row in set (0.21 sec)

mysql> select * from person_test;
+------+-------+------+----------+
| id   | name  | age  | dt       |
+------+-------+------+----------+
|    2 | bond  |   20 | 20190101 |
|    1 | james |   10 | 20190101 |
+------+-------+------+----------+
2 rows in set (0.09 sec)

mysql> insert overwrite person_test values (3, 'lily', 30, '20190101');
+------+
| rows |
+------+
|    1 |
+------+
1 row in set (0.61 sec)

mysql> select * from person_test;
+------+------+------+----------+
| id   | name | age  | dt       |
+------+------+------+----------+
|    3 | lily |   30 | 20190101 |
+------+------+------+----------+
1 row in set (0.13 sec)

注意倒数最后两句SQL,在执行了 insert overwrite 之后,表里面的数据被换成了新插入的一条数据。

总结

今天给大家介绍了一下DLA分区表的insert overwrite的功能,如果用户想做一定的ETL清洗,那么insert overwrite的功能还是非常必要的。

Happy DLAing

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
SQL 资源调度 Oracle
实时计算 Flink版产品使用合集之是否支持通过 TRUNCATE TABLE 语句来截断(truncate)表
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3月前
|
运维 关系型数据库 分布式数据库
PolarDB产品使用问题之RENAME TABLE操作的速度与表的大小是否有关
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
SQL HIVE
Hive表删除数据不支持使用Delete From...
Hive表删除数据不支持使用Delete From...
136 0
|
4月前
|
分布式计算 MaxCompute 开发工具
在MaxCompute中,使用`CREATE TEMPORARY TABLE`语句创建的临时表
【2月更文挑战第18天】在MaxCompute中,使用`CREATE TEMPORARY TABLE`语句创建的临时表
212 3
|
4月前
Hologres的INSERT ON CONFLICT语法暂时不支持多个values的直接插入
Hologres的INSERT ON CONFLICT语法暂时不支持多个values的直接插入
48 2
|
4月前
|
SQL 运维 DataWorks
DataWorks报错问题之执行带with语句报错如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
4月前
|
SQL HIVE
hive insert to 和insert overwrite 区别
hive insert to 和insert overwrite 区别
132 0
|
NoSQL Java Redis
Java中使用RedisTemplate根据前缀获取key列表
我们在使用 Redis 的时候,会需要获取以某个字符串开头的所有 key
774 0
|
SQL 分布式计算 数据库
HIVE表 DML 操作——第3关:将 select 查询结果插入 hive 表中
HIVE表 DML 操作——第3关:将 select 查询结果插入 hive 表中
875 0
|
SQL 算法 关系型数据库
开发指南—DDL语句—分区表语法—CREATE TABLE
本文主要介绍使用DDL语句进行建表的语法、子句、参数和基本方式
117 0