分区表
使用场景:数据量庞大且经常用来做查询的表
特点:将数据分别存储到不同的目录里
优点:避免全盘扫描,提高查询效率
分区的类型
它们的默认值分别是:
false,
strict, 要求至少有一个静态分区列,而 nonstrict
模式允许所有分区列都是动态的。
1000
100, 在每个 mapper 或 reducer 节点上允许创建的动态分区的最大数量。
注意: set 属性的修改只作用于当前会话
查看Hive中的属性设置
打开Hive命令行界面/Hue
示例>> 静态分区/动态分区
插入文件数据到静态分区(load data)
插入单条数据到静态分区(insert into )
从其他表插入数据到静态分区( insert into )
在 Hive 中,无论是静态分区还是动态分区,创建表时使用的 SQL 语句是相同的。这是因为分区的定义方式在表创建时是统一的,而分区的具体行为(静态或动态)是在数据插入时通过不同的操作来区分的。
静态分区:在插入数据时,分区值是明确指定的
LOAD DATA
命令:
将数据从文件直接加载到 Hive 表中,适用于批量导入数据文件, 文件中的数据必须与表的非分区列匹配
INSERT INTO
命令:
将数据从其他表或直接通过 VALUES
插入到目标表中,适合小规模数据插入或从其他表导入数据。
动态分区:在插入数据时,分区值是根据数据自动生成的
示例>>混合分区
在这个示例中:
-
year
是静态分区列,其值固定为'2023'
。 -
date
是动态分区列,其值从source_table
中动态生成
临时表

完整分区过程
动态分区示例



静态分区示例

sid
, name
, gender
, age
, academy
)以及分区字段( dt



混合分区示例

sid
, name
, gender
, age
, academy
)以及分区字段( year
, dt
): 

