学习 Hive(三):分区

分区(partition)是 Hive 优化查询的一种方式。

默认情况下,Hive 中的查询会扫描整张表,当查询一张极大的表时会严重降低查询性能。

在 Hive 中,每个分区对应着一个预定义的分区列,并存储在 HDFS 中表目录的子目录下。

创建分区表

CREATE TABLE IF NOT EXISTS friends_partition  
(
  id INT,
  name STRING
)
PARTITIONED BY (sex STRING)  
ROW FORMAT  
DELIMITED FIELDS TERMINATED BY ',';  

手动创建分区

ALTER TABLE friends_partition  
ADD PARTITION (sex='m')  

自动创建分区

LOAD DATA LOCAL INPATH '/path/girls.csv' OVERWRITE INTO TABLE friends_partition  
PARTITION (sex='f')  

向分区中插入数据

INSERT INTO TABLE friends_partition PARTITION (sex='m') values (1, 'tom'), (2, 'jerry')  

显示分区

SHOW PARTITIONS friends_partition  

显示:

sex=m  
sex=f  

HDFS 中表目录结构:

friends_partition  
  -sex=m
  -sex=f