hive之分桶技术

20 篇文章 1 订阅

分桶技术

分区不能细粒度的划分数据时

CLUSTERED BY (COLUMN_NAME)
[SORTED BY COLUMN_NAME ASC|DESC] INTO 4 BUCKETS

分桶关键字
bucket

默认采用对分桶字段进行hash值%总桶数的余数就是分桶数

分桶的意义
1.为了保存分桶查询结果的分桶结构(数据已经按照分桶字段进行了hash散列)
2.分桶的应用场景:数据抽样和join时可以提高MR的执行效率

创建表

create table if not exists buc1(
uid int,
uname string,
uage int
)
clustered by (uid) into 4 buckets
row format delimited
fields terminated by ","
;

load数据

load data local inpath "/home/hdfs/data.txt" into table buc1;

设置参数

set hive.enforce.bucketing=true;
set hive.exec.mode.local.auto=true;
set mapreduce.job.reduces=4;

查询数据

select *from buc1 where uage>22
cluster by(uid);

查询结果
uid%分桶数(4)
4和8在一起
1和5在一起
2和6在一起
3和7在一起

OK
buc1.uid        buc1.uname      buc1.uage
4       guofucheng      43
8       jingshijia      32
1       liudehua        50
5       caixukun        25
2       liming  40
6       xiaojinteng     27
3       zhangxueyou     41
7       guanxiaotong    24
Time taken: 322.482 seconds, Fetched: 8 row(s)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值