随着互联网发展,数据海量形问题越来越严重,PB级别的数据量已经非常常见。用传统数据库查询这么巨大的数据会很困难。而 Hive 的出现降低了数据查询的负担。Apache Hive 把 SQL 代码转换的 MapReduce 作业,并提交到 Hadoop 集群执行。但是若提交一个 SQL 查询的时候,Hive均读取全部数据集则会很耗时。若表的数据非常大,那么 MapReduce 作业的执行就比较低效。因此,在表创建分区可以明显提升数据查询效率。
Hive 分区其实就是将表中的数据按照一定规则散列成多个分区。常见的例如按照月分区、不同日期的分区。因此在具体查询数据时只需查对应分区的数据就可以,而不需要全表搜索,大大降低了查询时的时间开销。
创建分区表:
create table test_detail (
test_id string,
email string,
app_name string
) partitioned by (date_time string) stored as orc;
按照分区添加数据:
insert into table test_detail partition (date_time) select test_id, email, app_name, date_time from orders;
Hive 分区的好处:
1、Hive 的分区可以水分分散执行压力。
2、数据查询性能比较好。
3、不需要在整个表列中搜索单个记录。
Hive 分区的缺点:
1、可能会创建太多的小分区,也就是说可能会创建很多目录。
2、分区对于低容量数据是有效的,但有些查询比如对大的数据量进行分组需要消耗很长时间。