hive的分桶表

hive的分桶表

分区表是针对数据的储存路径
分通表是针对数据文件

步骤
创建一个普通表;
开启分桶设置;
创建一个分通表;
目的
提高索引效率,节省底层资源
实例
创建一个普通表并传入数据

create table stu(
name  string,
course  string,
grade  int
)
row format delimited fields terminated by " ";
load data local inpath "/root/student.txt" into table stu;

开启分桶设置

开启分桶设置
set hive.enforce.bucketing=ture;
设置默认的reduce个数
set mapreduce.job.reduces=-1;

创建一个分桶表

create table bu(
name  string,
course  string,
grade  int
)
clustered by (name)
into 4 buckets
row format delimited fields terminated by " ";

在客户端查看分区数量命令

desc formatted bu; 

导入数据到分桶表

insert into table bu
select * from stu;

在客户端查看数据是没有任何变化的

0: jdbc:hive2://doit01:10000> select * from bu;
+----------+------------+-----------+
| bu.name  | bu.course  | bu.grade  |
+----------+------------+-----------+
| 张三       | 数学         | 75        |
| 张三       | 语文         | 81        |
| 王五       | 英语         | 90        |
| 王五       | 数学         | 100       |
| 王五       | 语文         | 81        |
| 李四       | 数学         | 90        |
| 李四       | 语文         | 76        |
+----------+------------+-----------+

主要变化就是在50070端口的变化
在这里插入图片描述
数据就被分了4个桶,这样的话,我们再根据这个name的字段进行join的时候就会,节省资源了

抽样调查(不只是针对分桶表呦,普通表也是可以的)

--取其中的8分之3来抽样检查
select * from bu tablesample(bucket 3 out of 8 on name);
0: jdbc:hive2://doit01:10000> select * from bu tablesample(bucket 1 out of 4 on name);
+----------+------------+-----------+
| bu.name  | bu.course  | bu.grade  |
+----------+------------+-----------+
| 张三       | 数学         | 75        |
| 张三       | 语文         | 81        |
+----------+------------+-----------+
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值