如何在hive上建立分区表呢:
简单的创建sql如下:
CREATE EXTERNAL TABLE t(
`run_time` bigint ,
`enterprise_num` bigint ,
)
PARTITIONED BY (
`day` string)
这样的话,就简单的创建了一个分区字段为day的分区表。
那么我们在分区插入的时候,怎么插入呢:
insert into table t partition(day='2021-06-09')
select run_time,enterprise_num from other_t ;
很明显,这样子的插入是写死的,如果想要每天都将查询的数据建立分区表,这样写sql还要有改动,那么如何进行动态分区呢:
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
insert into table t partition(day)
select run_time,enterprise_num,current_date from other_t ;
大家可以注意到,当我们查询了三个字段时(多了current_date 字段),所以系统默认以最后一个字段current_date 为分区名,因为分区表的分区字段默认也是该表中的字段,且依次排在表中字段的最后面。所以分区需要分区的字段只能放在后面,不能把顺序弄错.
那如何删除某个分区表呢:
alter table t drop partition(day='2021-06-08');
这样子就可以删除分区字段为2021-06-08的分区表了。