前言
在《Hive 建表语句解析》文章中,建表的时候我们可以使用 PARTITIONED BY 子句和 CLUSTERED BY 子句来创建分区表和分桶表,为什么要创建分区表和分桶表呢?分区表和分桶表有什么区别呢?
分区表
1. 为什么分区
在Hive 查询中一般会扫描整个表内容,会消耗很多时间做没必要的工作。有时候只需要扫描表中关心的一部分数据,因此为了避免Hive全表扫描,建表时引入了partition概念,来提高查询效率。
注意:
- 在逻辑上分区表与非分区表没差别,在物理存储上,分区表会将数据按照指定的分区列值存储在不同的子目录中。
- 分区是以字段的形式在表结构中存在,但是该字段不存放实际的数据内容,仅仅是分区的表示。
2. 分区类型
分区分为动态分区和静态分区两种类型
- 静态分区:
条件:需要明确指定分区列的值
应用场景:非常适合每日增量数据抽取和计算的任务场景。 - 动态分区
条件:设置如下参数
-- 1.打开动态分区模式:
set hi