Hive--桶表

1. 为什么要使用桶表???

  • 单个分区或者表中的数据量越来越大,当分区不能更细粒的划分数据时,所以会采用分桶技术将数据更细粒度的划分和管理。
  • 分区提供了一个隔离数据和优化查询的便利的方式.但是当分区的数量过多时,会产生过多的小分区,这样会给namenode带来较大的压力.分桶是将数据集分解成更容易管理的若干部分的另一个技术。

2. 桶表分桶规则

  • 个人理解桶表的分桶类似于MapReduce的默认分区规则–HashPartitioner差不多,桶表的分区则是通过分桶的字段进行Hash然后除以桶的个数,然后取余数,余数决定数据是在哪个桶内。
  • 桶表本质上面并不会改变目录结构,桶表输出的文件个数等于桶的数量。

3. 桶表的创建

3.1 DLL
create table score_bucket (
`year` int, 
`course` string, 
`student` string, 
`score` int
)
comment 'score 分桶表'
clustered by (year) sorted by (score desc) into 3 buckets
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
3.2 数据
2018,语文,A,67
2018,英语,A,56
2018,数学,A,69
2018,语文,B,67
2018,英语,B,72
2018,数学,B,56
2019,语文,A,72
2019,英语,A,51
2019,数学,A,83
2019,语文,B,53
2019,英语,B,70
2019,数学,B,52
2020,语文,A,75
2020,英语,A,60
2020,数学,A,90
2020,语文,B,60
2020,英语,B,80
2020,数学,B,70
3.3 DML
hive> set hive.strict.checks.bucketing=false;
hive> load data local inpath '/home/work/data/hive/score.txt' overwrite into table score_bucket
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值