临时分区
本文介绍如何使用临时分区功能。
您可以在一张已经定义分区规则的分区表上,创建临时分区,并为这些临时分区设定单独的数据分布策略。在原子覆盖写操作或调整分区分桶策略时候,您可以将临时分区作为临时可用的数据载体。您可以为临时分区设定的数据分布策略包括分区范围、分桶数、以及部分属性,例如副本数、存储介质。
在以下应用场景中,您可以使用临时分区功能:
-
原子覆盖写操作
如果您需要重写某一正式分区的数据,同时保证重写过程中可以查看数据,您可以先创建一个对应的临时分区,将新的数据导入到临时分区后,通过替换操作,原子地替换原有正式分区,生成新正式分区。对于非分区表的原子覆盖写操作,请 参考 ALTER TABLE - SWAP。
-
调整分区数据的查询并发
如果您需要修改某一正式分区的分桶数,您可以先创建一个对应分区范围的临时分区,并指定新的分桶数,然后通过
INSERT INTO
命令将原有正式分区的数据导入到临时分区中,通过替换操作,原子地替换原有正式分区,生成新正式分区。 -
修改分区策略
如果您希望修改正式分区的分区范围,例如合并多个小分区为一个大分区,或将一个大分区分割成多个小分区,您可以先建立对应合并或分割后范围的临时分区,然后通过
INSERT INTO
命令将原有正式分区的数据导入到临时分区中,通过替换操作,原子地替换原有正式分区,生成新正式分区。
创建临时分区
您可以通过 ALTER TABLE 命令创建一个临时分区,也可以批量创建临时分区。
语法
创建一个临时分区
ALTER TABLE <table_name>
ADD TEMPORARY PARTITION <temporary_partition_name> VALUES [("value1"), {MAXVALUE|("value2")})]
[(partition_desc)]
[DISTRIBUTED BY HASH(<bucket_key>)];
ALTER TABLE <table_name>
ADD TEMPORARY PARTITION <temporary_partition_name> VALUES LESS THAN {MAXVALUE|(<"value">)}
[(partition_desc)]
[DISTRIBUTED BY HASH(<bucket_key>)];
批量创建临时分区
ALTER TABLE <table_name>
ADD TEMPORARY PARTITIONS START ("value1") END ("value2") EVERY {(INTERVAL <num> <time_unit>)|<num>}
[(partition_desc)]
[DISTRIBUTED BY HASH(<bucket_key>)];
参数说明
partition_desc
:为临时分区指定分桶数和部分属性,包括副本数、存储介质等信息。