您的位置:首页 > 其它

hive之分桶技术

2020-08-20 16:37 211 查看

分桶技术

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

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: