当前位置:网站首页>什么是分区分桶?
什么是分区分桶?
2022-07-25 21:59:00 【长不大的大灰狼】
一、分区

1、什么是分区
将整个表的数据在存储时,按照 ”分区键的列值“ 划分成多个子目录来存储。区从形式上可以理解为文件夹。
注意:
子目录名称就是分区名(分区键的列值)。
2、为什么要分区
随着系统运行时间的增加,表的数据量会越来越大,而Hive查询数据的数据的时候通常使用的是"全表扫描",这样将会导致查询效率大大的降低。 Hive引进的分区技术,能避免Hive全表扫描,提升查询效率。
比如我们要收集某个大型网站的日志数据,一个网站每天的日志数据存在同一张表上,由于每天会生成大量的日志,导致数据表的内容巨大,在查询时进行全表扫描耗费的资源非常多。那其实这个情况下,我们可以按照日期对数据表进行分区,不同日期的数据存放在不同的分区,在查询时只要指定分区字段的值就可以直接从该分区查找。
3、创建分区表
创建分区表的时候,要通过关键字 partitioned by (name string)声明该表是分区表,并且是按照字段name进行分区,name值一致的所有记录存放在一个分区中,分区属性name的类型是string类型。当然,可以依据多个列进行分区,即对某个分区的数据按照某些列继续分区。
注意:
千万不要以为是对属性表中真正存在的列按照属性值的异同进行分区。比如上面的分区依据的列name并不真正的存在于数据表中,是我们为了方便管理添加的一个伪列,这个列的值也是我们人为规定的,不是从数据表中读取之后根据值的不同将其分区。我们并不能按照某个数据表中真实存在的列,如userid来分区。
二、分桶
1、什么是分桶
分桶是相对分区进行更细粒度的划分。桶是通过对指定列进行哈希计算来实现的,通过哈希值将一个列名下的数据切分为一组桶,并使每个桶对应于该列名下的一个存储文件。
注意:
在hdfs目录上,桶是以文件的形式存在的,而不是像分区那样以文件夹的形式存在。
2、为什么要分桶
在分区数量过于庞大以至于可能导致文件系统崩溃时,我们就需要使用分桶来解决问题了。
分区中的数据可以被进一步拆分成桶,不同于分区对列直接进行拆分,桶往往使用列的哈希值对数据打散,并分发到各个不同的桶中从而完成数据的分桶过程。
注意
hive使用对分桶所用的值进行hash,并用hash结果除以桶的个数做取余运算的方式来分桶,保证了每个桶中都有数据,但每个桶中的数据条数不一定相等。
3、 创建分桶
与分区不同的是,分区依据的不是真实数据表文件中的列,而是我们指定的伪列,但是分桶是依据数据表中真实的列而不是伪列。所以在指定分区依据的列的时候要指定列的类型,因为在数据表文件中不存在这个列,相当于新建一个列。而分桶依据的是表中已经存在的列,这个列的数据类型显然是已知的,所以不需要指定列的类型。
参考文章
[1] Hive分区、分桶操作及其比较
[2] 分区、分桶语法
边栏推荐
- Sofa weekly | open source person - Niu Xuewei, QA this week, contributor this week
- 2年功能测试,却感觉自己什么都不会,2022我该何去何从?
- 选择的能力
- Why does redisv6.0 introduce multithreading?
- [MAIXPY]kpu: load error:2005, ERR_ READ_ File: read file failed problem solving
- 狗粮的成分
- 如何快速搭建图片服务器[通俗易懂]
- 【饭谈】细说:下克上,向上管理,向上画饼。
- [Fantan] how to design a test platform?
- Lichuang EDA -- creation of devices 01 resistance (II)
猜你喜欢

立创EDA——器件的创建01-电阻(二)

Lichuang EDA -- creation of devices 01 resistance (II)

【饭谈】如何设计好一款测试平台?

新版Maixhub部署(V831与K210)

Shopify sellers: share some tips for social media marketing!

手机端微信发朋友圈功能测试点总结

Guiding principles of information security construction

Share | intelligent fire emergency management platform solution (PDF attached)

『Skywalking』.NET Core快速接入分布式链路追踪平台

在腾讯干软件测试3年,7月无情被辞,想给划水的兄弟提个醒...
随机推荐
Dovecot set mailbox quota
[fan Tan] those stories that seem to be thinking of the company but are actually very selfish (I: building wheels)
c sqlite ... ...
New maixhub deployment (v831 and k210)
Basic knowledge in the project
在进行自动化测试,遇到验证码的问题,怎么办?
卸载npm和安装npm_使用`npm uninstall`卸载npm软件包「建议收藏」
立创EDA——器件的创建01-电阻(二)
Redis master-slave architecture lock failure problem (master-slave)
Why does redisv6.0 introduce multithreading?
The dragon lizard exhibition area plays a new trick this time. Let's see whose DNA moved?
[Flink] flick rocksdbliststate reports an error you cannot add null to a liststate
Jmeter--- set proxy recording request
少儿编程 电子学会图形化编程等级考试Scratch一级真题解析(判断题)2022年6月
After three years of software testing at Tencent, I was ruthlessly dismissed in July, trying to wake up my brother who was paddling
Is there any document for synchronizing from Oracle to ODPs?
[MAIXPY]kpu: load error:2005, ERR_ READ_ File: read file failed problem solving
2022最新软件测试八股文,能不能拿心仪Offer就看你背得怎样了
自动化测试岗花20K招人,到最后居然没一个合适的,招两个应届生都比他们强吧
Redis usage details