hive 分桶

1.何为分桶以及和分区的区别

2.实际例子


分桶:如果我们根据某列进行分桶,意思就是对这列的值进行hash,然后除以桶的个数再决定把这个值放到哪个桶中,当我们查询数据的时候,where 分桶列=“” 首先也会对这个条件的值进行hash,找到他所在的桶,这样的话 其他桶就不会再找避免暴力扫描,速度上也会提升

和分区区别:分区是增加实际目录,每增加一个分区就会多个目录,分桶时把一个大的文件分成多个小文件


实际例子:

1.分桶格式:

drop table if exists table_name;

create table if not exists table_name(

row_name row_type,

row_name1 row_type,

...........................................

)

clustered by (row_name) stored by(row_name1) into 4 buckets

row format delimited fields terminated by '\t' stored as textfilel

set hive.enforce.bucketing=true;注意如果没有这句,分桶不会生效

实际例子:

创建分区表:

hive> create table if not exists buckets4(id string,name string) clustered by(id) sorted by(name) into 3  buckets row format delimited fields terminated by '\t' stored as textfile;

开启分桶:

hive> set hive.enforce.bucketing=true;

插入数据:

hive> insert overwrite table buckets4 select * from buckets3;

查看目录变化:

hive> dfs -ls /user/hive/warehouse/buckets4;

Found 3 items
-rwxr-xr-x   2 root supergroup         69 2015-11-21 01:55 /user/hive/warehouse/buckets4/000000_0
-rwxr-xr-x   2 root supergroup         72 2015-11-21 01:56 /user/hive/warehouse/buckets4/000001_0
-rwxr-xr-x   2 root supergroup         49 2015-11-21 01:58 /user/hive/warehouse/buckets4/000002_0

查看内容看你的数据是否被分散在这个三个桶中:

hive> dfs -text  /user/hive/warehouse/buckets4/000000_0;

hive> dfs -text  /user/hive/warehouse/buckets4/000001_0;

hive> dfs -text  /user/hive/warehouse/buckets4/000002_0;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值