在传统数据重写的过程中,还是使用多批次处理等复杂方法进行先删后插时出现的数据空白期。
有了临时分区和原子替换分区等功能可以完美解决此问题。
在以下应用场景中,您可以使用临时分区功能:
- 原子的覆盖写操作
如果您需要重写某一分区的数据,同时保证重写过程中可以查看数据,您可以先创建一个对应的临时分区,将新的数据导入到临时分区后,通过替换操作,原子地替换原有分区,从而达到目的。对于非分区表的原子覆盖写操作,请参考 ALTER TABLE - SWAP。
增加临时分区
ALTER TABLE [database.]table
ADD TEMPORARY PARTITION [IF NOT EXISTS] partition_name
partition_desc ["key"="value"]
[DISTRIBUTED BY HASH (k1[,k2 ...]) [BUCKETS num]];
使用临时分区替换原分区
ALTER TABLE [database.]table
REPLACE PARTITION partition_name
partition_desc ["key"="value"]
WITH TEMPORARY PARTITION
partition_desc ["key"="value"]
[PROPERTIES ("key"="value", ...)]
删除临时分区
ALTER TABLE [database.]table
DROP TEMPORARY PARTITION partition_name;