Hive(6)分桶表

分桶表

将数据分文件存储 , 类似于分区
uid name
1001 ss1
1002 ss2
1003 ss3
1004 ss4
1005 ss5
1006 ss6
1007 ss7
1008 ss8
1009 ss9
1010 ss10
1011 ss11
1012 ss12
1013 ss13
1014 ss14
1015 ss15
1016 ss16

clustered by(uid) – 分桶语法
1 创建分桶表
create table if not exists tb_cluster(
uid int ,
name string
)
clustered by(uid)
into 4 buckets
row format delimited fields terminated by “\t” ;
desc formatted tb_cluster ;

2 创建普通表 导入数据到普通表中

create table if not exists tb_cluster2(
uid int ,
name string
)
row format delimited fields terminated by “\t” ;
load data local inpath “/hive/data/cluster.txt” into table tb_cluster2 ;
±-----------------±------------------+
| tb_cluster2.uid | tb_cluster2.name |
±-----------------±------------------+
| 1001 | ss1 |
| 1002 | ss2 |
| 1003 | ss3 |
| 1004 | ss4 |
| 1005 | ss5 |
| 1006 | ss6 |
| 1007 | ss7 |
| 1008 | ss8 |
| 1009 | ss9 |
| 1010 | ss10 |
| 1011 | ss11 |
| 1012 | ss12 |
| 1013 | ss13 |
| 1014 | ss14 |
| 1015 | ss15 |
| 1016 | ss16 |
±-----------------±------------------+

3 开启分桶
set hive.enforce.bucketing=true;
set mapreduce.job.reduces=-1;

4 基于查询的方式将数据导入到分桶表中
insert into table tb_cluster
select uid , name from tb_cluster2 ;

抽样查询
就是从表中取部分样本数据 字段.hashcode / n 将数据分n份
抽样查询的表可以不是分桶表

select
*
from
tb_cluster
tablesample(bucket 1 out of 4 on uid) – 获取四个桶中的第一个
;
select
*
from
tb_emp
tablesample(bucket 3 out of 8 on empno) ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值