分区表实际上是将原来在关系型数据库中的一个大表的数据分开来存储。
一个典型的案例:每日新增用户。
在关系型数据库中,我们会给用户表添加一个字段register_time,如果要查询某天的新增用户的时候,我们制定regster_time等于某一天。
HIVE采取了另外一种策略,即存储的时候就将每天的数据分开来存,每天的数据存储在不同的位置上,那么在查询的时候,只要需要操作某一天的数据文件即可,不需要查询所有的数据,然后再进行过滤。
·Partition 对应于数据库的 Partition 列的密集索引
·在 Hive 中,表中的一个 Partition 对应于表下的一个目录,所有的 Partition 的数据都存储在对应的目录中
分区表的创建语法CREATE TABLE partition_table(id int,name string) PARTITIONED BY(day string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’ ;
准备数据partition.txt
1 tianshouzhi
2 wangxiaoxiao
导入数据LOAD DATA LOCAL INPATH ‘/root/stu.txt’ INTO TABLE partition_table PARTITION(‘20160416’);
LOAD DATA LOCAL INPATH ‘/root/stu.txt’ INTO TABLE partition_table PARTITION(‘20160415’);
LOAD DATA LOCAL INPATH ‘/root/stu.txt