hive分桶

首页 » Hive » hive分桶

存储数据时要求每个目录下的文件不能超过128M,所以要使用分桶来把这一个大文件拆分成一个个的小文件。(小文件过多会造成资源调度耗费很高)

  • 分桶表是对列值提取哈希值的方式,将不同的数据放到不同的文件存储
  • 对于hive的每一个表,分区都可以再进一步进行分桶
  • 由列的哈希值除以桶的个数来决定每条数据划分在哪个桶中。

适用场景:

数据抽样、map-join

创建分桶表

1、创建普通表

create table dom(
     id int,
     name string,
     age int
 )
 row format delimited fields terminated by ',';

数据

1,tom,11          //11/4=3号桶
2,cat,22            // 22/4=2号桶
3,dog,33
4,hive,44。      //44/4=0号桶
5,hbase,55
6,mr,66
7,alice,77
8,scala,88
 
3、创建分桶表
create table domft(
     id int,
     name string,
     age int
 )
 clustered by(age) into 4 buckets
 row format delimited fields terminated by ',';

4、然后通过普通表导入数据

insert into table domft
select id,name,age
from dom;

 

hive分桶
分桶表里已经有数据里
hive分桶
已经分好桶
  • 桶表 抽样查询
select * from bucket_table tablesample(bucket 1 out of 4)

tablesample(bucket x out of y)

x: 表示从哪个bucket开始抽取数据

y: 必须为该表总的bucket数的倍数或因子

例如

总数有32个桶
x=2----从第二个桶开始抽取
y=4----桶的因子或倍数
抽取的数据:32/4=8份
2,6,10,14,18,22,26,30

x=3
y=256
32/256=1/8分
从3号桶开始抽取,在3号桶里抽取1/8个数据
hive分桶
抽样查询
hive分桶

分享到:
赞(0) 打赏

评论 4

评论前必须登录!

 

  1. #1

    给你点赞

    hello8个月前 (03-27)
  2. #2

    奥利给

    靓妹8个月前 (03-28)
  3. #3

    我也是小白以后多多交流

    中国加油小子8个月前 (03-28)
  4. #4

    以后多多交流

    靓仔6个月前 (05-26)

觉得文章有用就打赏一下弟弟吧

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.5主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
正在播放:

作者想对您说:

累了就停下来听首歌吧

听完后会给您一个好心情

最后

等到您不容易

还希望您能多待一会儿

      00:00/00:00