首页 > 其他 > 详细

hive的分桶

时间:2020-04-01 17:26:55      阅读:63      评论:0      收藏:0      [点我收藏+]

一.总结

  分桶是相对分区进行更细粒度的划分。分桶将整个数据内容安装某列属性值得hash值进行区分,如要安装name属性分为3个桶,就是对name属性值的hash值对3取摸,按照取模结果对数据分桶。如取模结果为0的数据记录存放到一个文件,取模为1的数据存放到一个文件,取模为2的数据存放到一个文件。几个桶就是几个文件.

二.用途

  在分区数量过于庞大,就会有海量的目录建立,以至于可能导致文件系统崩溃时,我们就需要使用分桶来解决问题了。

 三.建立分桶表

set hive.enforce.bucketing=true;(建议开启)
CREATE
TABLE `report_buckets_test`( `id` string, `mobile` string, `idcard` string, `name` string, `result` string, `contact` string, `ip` string, `gps` string, `create_date` string, `checktime` string, `checkname` string, `depname` string, `depcode` string, `county_code` string, `area_addr` string)clustered by (mobile) INTO 3 BUCKETS;

往表里插入数据

set hive.enforce.bucketing=true;(建议开启)
INSERT
into report_buckets_test select * FROM report;

这样数据就会被插入到表report_buckets_test 

因为分表作用的是文件,并不会引起目录的变化吗,这里是建立3个桶来装,取模之后只放到三个桶里面去了

技术分享图片

 

 四.基于桶抽样

SELECT * FROM report_buckets_test TABLESAMPLE(BUCKET 1 OUT OF 3 ON mobile); 

  桶的个数从1开始计数。因此,前面的查询从4个桶的第一个中获取所有的用户。 对于一个大规模的、均匀分布的数据集,这会返回表中约四分之一的数据行。我们 也可以用其他比例对若干个桶进行取样(因为取样并不是一个精确的操作,因此这个 比例不一定要是桶数的整数倍)。

 

hive的分桶

原文:https://www.cnblogs.com/makailong/p/12612913.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!