DWS只写分区hdfs外表能力
DWS支持sql on hadoop(hdfs)能力,在8.0版本支持只读表,在8.1.1引入了只写外表(紧支持orc只写文件),同时也支持分区表的只写,本文测试验证只写外表的分区能力。
首先需要配置好hdfs,例如云上将core-site.xml,elk-site.xml,hdfs-site.xml,krb5.conf,user.keytab文件/home/Ruby/hdfs_conf下,具体配置方式本文略,参考产品文档。
1、创建hdfs_server
CREATE SERVER hdfs_server FOREIGN DATA WRAPPER HDFS_FDW OPTIONS (address '10.10.0.100:25000',hdfscfgpath '/home/Ruby/hdfs_conf',type'HDFS');
2、创建普通表,并插入数据
create table a_temp2(id int,con text,pt_dt text);
insert into a_temp2 values(1,'a','202312'),(2,'c','202312'),(3,'c','202401');
3、创建只写外表
create foreign table fw_a_temp2(id int,con text,pt_dt text)
server hdfs_server
options (encoding 'UTF8',foldername '/user/hive/a_temp2/',format 'orc')
write only
partition (pt_dt);
向只写外表插入数据
insert into fw_a_temp2 select * from a_temp2;
此时执行如下命令
hdfs dfs -ls hdfs://10.10.0.100:25000/user/hive/a_temp2
从hdfs查询文件时,可以看到类似如下内容
drwxr-xr-x - hive hive 2024-01-10 14:06 hdfs://10.10.0.100:25000/user/hive/a_temp2/pt_dt=202312
drwxr-xr-x - hive hive 2024-01-10 14:06 hdfs://10.10.0.100:25000/user/hive/a_temp2/pt_dt=202401
可以看到自动创建了分区
执行如下命令
hdfs dfs -ls hdfs://10.10.0.100:25000/user/hive/a_temp2/pt_dt=202312
从hdfs查询文件时,可以看到类似如下内容
drwxr-xr-x - hive hive 2024-01-10 14:06 hdfs://10.10.0.100:25000/user/hive/a_temp2/pt_dt=202312/mpp_postgres_public_fw_a_temp2_dn_6001_6002_1.orc
drwxr-xr-x - hive hive 2024-01-10 14:06 hdfs://10.10.0.100:25000/user/hive/a_temp2/pt_dt=202312/mpp_postgres_public_fw_a_temp2_dn_6003_6004_1.orc
4、创建只读外表
create foreign table fr_a_temp2(id int,con text,pt_dt text)
server hdfs_server
options (encoding 'UTF8',foldername '/user/hive/a_temp2/',format 'orc')
read only
distribute by roundrobin
partition (pt_dt) automapped;
执行explain select * from fr_a_temp2 where pt_dt='202312';
可以从执行计划看到走了分区裁剪
Partition pruning: pt_dt(total 2;left 1)
当前dws只读外表支持多级分区,只写外表只支持一级分区。
- 点赞
- 收藏
- 关注作者
评论(0)