上QQ阅读APP看书,第一时间看更新
2.2.3 Hive表分区
Hive表支持多分区(partition)。简单来说,一个分区就是一个文件目录,存储了特定的数据文件。当有新的数据生成的时候,可以将数据加载到指定的分区,读取数据的时候也可以指定分区。对于SQL查询,如果查询中指定了分区列的属性条件,则Hive会智能地选择特定分区(目录),从而避免全量数据的扫描,减少读写操作对集群的压力。
下面的一组SQL语句,演示了如何使用分区:
Hive> create table invites (id int, name string) partitioned by (ds string) row format delimited fields terminated by 't' stored as textfile;? Hive> load data local inpath '/user/hadoop/data.txt' overwrite into table invites partition (ds='2016-08-16');? Hive> select * from invites where ds ='2016-08-16';?
Apache Kylin支持增量的Cube构建,通常是按时间属性来增量地从Hive表中抽取数据。如果Hive表正好是按此时间属性做分区的话,那么可以利用到Hive分区的好处,每次Hive构建的时候可以直接跳过不相干日期的数据,节省Cube构建的时间。这样的列在Apache Kylin里也称为分割时间列(partition time column),通常它应该也是Hive表的分区列。