创建OSS分区表后,可以通过INSERT OVERWRITE重写OSS数据。本文介绍如何写入数据到分区表。
步骤一:创建Schema
- 登录DLA控制台。
- 单击左侧导航栏的 。
- 单击登录到DMS,执行以下SQL创建OSS Schema。
您也可以通过MySQL客户端或者程序代码等方式连接DLA,然后执行以下SQL创建OSS Schema。
CREATE SCHEMA dla_oss_demo with DBPROPERTIES( catalog='oss', #指定创建的Schema类型为OSS。 location= 'oss://oss-bucket-name/dla/' #文件所在的OSS Bucket目录,需以
/
结尾。 );
步骤二:创建分区表
CREATE EXTERNAL TABLE dla (
prod_name string,
cnt bigint)
PARTITIONED BY (y string, m string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION 'oss://bucket-name/dla/';
假设OSS文件的存储路径为:https://bucket-name.oss-cn-hangzhou.aliyuncs.com/dla/y=2019/m=3/cnt.txt
和https://bucket-name.oss-cn-hangzhou.aliyuncs.com/dla/y=2018/m=12/cnt2.txt
。
步骤三:执行MSCK命令更新分区信息
MSCK REPAIR TABLE dla;
步骤四:执行SHOW PARTITIONS命令查看分区信息
show partitions dla;
+-----------+
| y=2018/m=12|
| y=2019/m=3 |
步骤五:查询分区表数据
select * from dla;
+---------------------------+
|prod_name | cnt | y | m |
+---------------------------+
|鼠标 | 1 |2019 | 3 |
|显示器 | 2 |2019 | 3 |
|键盘 | 4 |2019 | 3 |
|办公桌 | 100 |2018 | 12 |
|椅子 | 150 |2018 | 12 |
步骤六:向分区表插入一条数据
insert into dla values ("硬盘",10,"2019","3");
+---------------------------+
select * from dla;
+---------------------------+
|prod_name | cnt | y | m |
+---------------------------+
|硬盘 | 10 |2019 | 3 |
|鼠标 | 1 |2019 | 3 |
|显示器 | 2 |2019 | 3 |
|键盘 | 4 |2019 | 3 |
|办公桌 | 100 |2018 | 12 |
|椅子 | 150 |2018 | 12 |
步骤七:执行INSERT OVERWRITE向分区表插入数据
insert overwrite dla values ("电脑",10,"2019","3");
select * from dla;
+---------------------------+
|prod_name | cnt | y | m |
+---------------------------+
|电脑 | 10 |2019 | 3 |
|办公桌 | 100 |2018 | 12 |
|椅子 | 150 |2018 | 12 |
执行INSERT OVERWRITE后,表中的数据更新为新插入的数据。OSS Bucket中dla/y=2018/m=12/
目录下的数据无变化,而dla/y=2019/m=3/
目录中cnt.txt文件已被删除,仅剩INSERT OVERWRITE插入的一条数据。