1. 删除指定范围内的分区数据
//删除时间范围内的数据
ALTER TABLE tb drop PARTITION(dt>0);
//删除多个独立partition的数据
ALTER TABLE tb drop if exists
PARTITION(code="a",dt="20190523"),
PARTITION(code="b",dt="20190523");
2.如果hive的数据表为外表,且想删除分区值为null的数据,可以采用以下的办法
a.将表转为内部表 alter table tb set TBLPROPERTIES ('EXTERNAL'='FALSE')
b.删除数据 如果是全量删除可以使用 truncate table tb,部分删除可以使用INSERT OVERWRITE table tb SELECT * FROM tb WHERE ***
c.重新将表设置为外表:alter table tb set TBLPROPERTIES ('EXTERNAL'='TRUE')
3.字段拼接
select concat_ws(',',collect_set(one)) as arr_str from table
4.插入数据(带分区)
//如何对齐分区?
//应该将分区放在最后,例如
insert overwrite table insert_tb partition(dt)
select
a,
b,
dt
from read_tb;