创建分区
create table user(
name string
)
partitioned by (dt string,b string);
添加分区
alter table user add if not exists partition(dt='20140405',b='boy');
删除分区
alter table user drop if extists partition(dt='20140405',b='girl');
导入分区数据
load data local inpath '/home/data/user.txt' overwrite into table user partition(dt='20140405'); //overwrite覆盖原始文件。非overwrite
load data inpath '/home/data/user.txt' overwrite into table userr partition(dt='20140405'); //剪切过去,不是复制过去。
insert into(overwrite) table user partition(dt='20140405')
select name,age from student
where sex = 1;
自动化分区
create table user{name} partitioned by (dt string) row format delimited fields terminated by '\t' lines terminated by '\n' stored as textfil;
show partitions user;
select * from user;
set hive.exec.dynamic.partition = true; //在一次hive cli界面内生效。
set hive.exec.dynamic.parttion.mode = nonstrict; //strict第一个分区需要固定
insert overwrite table user partiton(dt) select name,age as dt from student;
show partitions user;
select * from user where dt = '1';
hadoop fs -text "warehouse/user";
分区在创建,插入,查询阶段,需要保持分区的顺序一致。