tdh inceptor表的分区分桶和hdfs目录的关系,partition,bucket

create table user_ext(name string ,age int,sex string) clustered by (sex) into 2 buckets  row format delimited fields terminated by ',' location '/tmp/tableuser';

create
table user(name string ,age int,sex string) comment 'input text table ' row format delimited fields terminated by ','; create table user2(name string ,age int ) comment '2 buck by age' partitioned by (sex string) clustered by (age) into 2 buckets stored as orc; create table user3( name string,age int) comment '3 buck age' partitioned by (sex string) clustered by(age) into 3 buckets stored as orc ;
set hive.exec.dynamic.partition=true;
insert into user2 partition(sex) select 'zs',17,'girl' from system.dual;
dfs -ls /inceptorsql1/user/hive/warehouse/default.db/hive/user2;
insert into user2 partition(sex) select 'zs',17,'boy' from system.dual;

 此时可见user2目录下有partition=girl和partition=boy两个子目录。

dfs -ls /inceptorsql1/user/hive/warehouse/default.db/hive/user2/sex=girl;

此时可见sex=girl目录下有两个文件000000_0,000001_0 因为分为两个桶。根据hash规则,age=17,17%2=1,则数据在000001_0的文件中。删掉此文件。

dfs -rm /inceptorsql1/user/hive/warehouse/default.db/hive/user2/sex=girl/000001_0;
select * from user2;

可见user2变空了,没有了数据。再插入数据到000000_0文件中。

insert into user2 partition(sex) select 'a',18,'girl' from system.dual;
select * from user2;

可见sex=girl目录下有了000000_0,000000_0_copy_1,000001_0三个文件。删除000000_0后仍然可以查看到a,18,girl的数据。删除000000_0_copy_1后表user2变为空表。

 

通过以上实验可以看出,分区且分桶的表,其表目录下包括下级目录,文件数量大于桶数*分区数。即使桶中数据为空,桶文件仍然存在。

 

转载于:https://www.cnblogs.com/wifi0/p/7420386.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值