DLA支持分区表的INSERT OVERWRITE

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
对象存储 OSS,20GB 3个月
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: ![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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
8月前
|
SQL 资源调度 Oracle
实时计算 Flink版产品使用合集之是否支持通过 TRUNCATE TABLE 语句来截断(truncate)表
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
7月前
|
存储 SQL 分布式计算
MaxCompute产品使用问题之upsert into语句如何在2.0事务表使用
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
68 10
|
8月前
|
SQL HIVE
Hive表删除数据不支持使用Delete From...
Hive表删除数据不支持使用Delete From...
387 0
|
SQL 存储 分布式计算
Hive学习---5、分区表和分桶表
Hive学习---5、分区表和分桶表
|
8月前
Hologres的INSERT ON CONFLICT语法暂时不支持多个values的直接插入
Hologres的INSERT ON CONFLICT语法暂时不支持多个values的直接插入
72 2
|
SQL 分布式计算 数据库
HIVE表 DML 操作——第3关:将 select 查询结果插入 hive 表中
HIVE表 DML 操作——第3关:将 select 查询结果插入 hive 表中
1141 1
|
8月前
|
SQL HIVE
hive insert to 和insert overwrite 区别
hive insert to 和insert overwrite 区别
334 0
|
4月前
|
自然语言处理 IDE 测试技术
通义灵码最全使用指南,一键收藏
通义灵码最全使用指南,一键收藏。
121050 24
通义灵码最全使用指南,一键收藏
|
SQL 存储 数据采集
Hive 分区表和分桶表
Hive 分区和分桶的区别
196 0
|
SQL 算法 关系型数据库
开发指南—DDL语句—分区表语法—CREATE TABLE
本文主要介绍使用DDL语句进行建表的语法、子句、参数和基本方式
137 0