Hive学习路线-Hive中的分桶
  yXrgnj2AQg6w 2023年11月27日 30 0

八、Hive中的分桶

分区:将文件切割成多个子目录

select * from partition(k=v) ;//减少数据量

分桶:将文件切割成多个小文件

采集数据,按照桶采集 //减少数据量

桶中数据的join操作,效率更高 //减少数据量

原理:

MR中:按照key的hash值对reducetask个数求模

Hive中:按照分桶字段的hash值对分桶的个数求模

分桶:

方便抽样(采用数据)

提高join的查询效率

案例:

1. 创建表,设置分桶字段 create table cluster_tb(id int ,name string) clustered by(id) into 4 buckets row format delimited fields terminated by ','; 创建普通表: create table cluster_tb2(id int ,name string) row format delimited fields terminated by ','; load data local inpath '/home/zhangsan/cluster.txt' into table cluster_tb2; 2. 配置属性 set hive.enforce.bucketing=true set mapreduce.job.reduces=-1 3. 使用子查询的方式,将数据添加到cluster_tb中 insert into table cluster_tb select id,name from cluster_tb2 cluster by(id);

数据的采集:

select * from tbName tablesample (bucket startNum out of sizeNum on colName) //从startNum开始抽取数据,采取bucketSize/sizeNum的数据

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月27日 0

暂无评论

推荐阅读
yXrgnj2AQg6w