概述: Hive作为一种开源数据仓库系统,用来存储、查询和分析大数据集。Hive中的数据,逻辑概念上存储结构划分为表、区/Partition和桶/Bucket:总之,都是为了提高查询效率
一、分区表
hive分区表是指按照数据表的某列或某些列分为多个区,一般会按照日期进行分区。当我们查询数据的时候,就可以限制select * from tmp_aa where dt=’20220817‘取到切片为20220817的数据。
二、分桶表
分桶是相对分区进行更细粒度的划分。分桶将整个数据内容安装某列属性值得hash值进行区分,如要安装name属性分为3个桶,就是对name属性值的hash值对3取摸,按照取模结果对数据分桶。
分区表和分桶表的区别:
分区表 | 分桶表 | |
存储形式 | 类似文件夹 | 文件 |
创建方式 | 分区表使用partitioned by 子句指定,以指定字段为伪列,需要指定字段类型 | 分桶表由clustered by 子句指定,指定字段为真实字段,需要指定桶的个数 |
优点 | 避免全表扫描,根据分区列查询指定目录提高查询速度 | 1.进行抽样 2.连接两个在(包含连接列的)相同列上划分了桶的表,可以使用 Map 端连接 (Map-side join)高效的实现 |