产品概述
基本概念
集群架构
产品优势
应用场景
ALTER TABLE ADD TEMPORARY PARTITION 语句对一个表添加临时分区:ALTER TABLE tbl1 ADD TEMPORARY PARTITION tp1 VALUES LESS THAN("2020-02-01");ALTER TABLE tbl2 ADD TEMPORARY PARTITION tp1 VALUES [("2020-01-01"), ("2020-02-01"));ALTER TABLE tbl1 ADD TEMPORARY PARTITION tp1 VALUES LESS THAN("2020-02-01")("in_memory" = "true", "replication_num" = "1")DISTRIBUTED BY HASH(k1) BUCKETS 5;ALTER TABLE tbl3 ADD TEMPORARY PARTITION tp1 VALUES IN ("Beijing", "Shanghai");ALTER TABLE tbl4 ADD TEMPORARY PARTITION tp1 VALUES IN ((1, "Beijing"), (1, "Shanghai"));ALTER TABLE tbl3 ADD TEMPORARY PARTITION tp1 VALUES IN ("Beijing", "Shanghai")("in_memory" = "true", "replication_num" = "1")DISTRIBUTED BY HASH(k1) BUCKETS 5;
HELP ALTER TABLE; 查看更多帮助和示例。ALTER TABLE DROP TEMPORARY PARTITION 语句删除一个表的临时分区:ALTER TABLE tbl1 DROP TEMPORARY PARTITION tp1;
HELP ALTER TABLE; 查看更多帮助和示例。ALTER TABLE REPLACE PARTITION 语句将一个表的正式分区替换为临时分区。ALTER TABLE tbl1 REPLACE PARTITION (p1) WITH TEMPORARY PARTITION (tp1);ALTER TABLE tbl1 REPLACE PARTITION (p1, p2) WITH TEMPORARY PARTITION (tp1, tp2, tp3);ALTER TABLE tbl1 REPLACE PARTITION (p1, p2) WITH TEMPORARY PARTITION (tp1, tp2)PROPERTIES ("strict_range" = "false","use_temp_partition_name" = "true");
HELP ALTER TABLE; 查看更多帮助和示例。strict_range
默认为 true。对于 Range 分区,当该参数为 true 时,表示要被替换的所有正式分区的范围并集需要和替换的临时分区的范围并集完全相同。当置为 false 时,只需要保证替换后,新的正式分区间的范围不重叠即可。
对于 List 分区,该参数恒为 true。要被替换的所有正式分区的枚举值必须和替换的临时分区枚举值完全相同。下面举例说明:[10, 20), [20, 30), [40, 50) => [10, 30), [40, 50)
[10, 30), [40, 45), [45, 50) => [10, 30), [40, 50)
[10, 50) => [10, 50)
[10, 30), [40, 50) => [10, 30), [40, 50)
strict_range 为 true,则不可以使用 tp1 和 tp2 替换 p1。如果为 false,且替换后的两个分区范围 [10, 30), [40, 50) 和其他正式分区不重叠,则可以替换。(1, 2, 3), (4, 5, 6) => (1, 2, 3, 4, 5, 6)
(1, 2, 3), (4), (5, 6) => (1, 2, 3, 4, 5, 6)
(("1","beijing"), ("1", "shanghai")), (("2","beijing"), ("2", "shanghai")), (("3","beijing"), ("3", "shanghai")) => (("1","beijing"), ("1", "shanghai"), ("2","beijing"), ("2", "shanghai"), ("3","beijing"), ("3", "shanghai"))
(("1","beijing"), ("1", "shanghai")), (("2","beijing"), ("2", "shanghai"), ("3","beijing"), ("3", "shanghai")) => (("1","beijing"), ("1", "shanghai"), ("2","beijing"), ("2", "shanghai"), ("3","beijing"), ("3", "shanghai"))
use_temp_partition_name
默认为 false。当该参数为 false,并且待替换的分区和替换分区的个数相同时,则替换后的正式分区名称维持不变。如果为 true,则替换后,正式分区的名称为替换分区的名称。下面举例说明:ALTER TABLE tbl1 REPLACE PARTITION (p1) WITH TEMPORARY PARTITION (tp1);
use_temp_partition_name 默认为 false,则在替换后,分区的名称依然为 p1,但是相关的数据和属性都替换为 tp1 的。
如果 use_temp_partition_name 默认为 true,则在替换后,分区的名称为 tp1。p1 分区不再存在。ALTER TABLE tbl1 REPLACE PARTITION (p1, p2) WITH TEMPORARY PARTITION (tp1);
use_temp_partition_name 默认为 false,但因为待替换分区的个数和替换分区的个数不同,则该参数无效。替换后,分区名称为 tp1,p1 和 p2 不再存在。INSERT INTO tbl TEMPORARY PARTITION(tp1, tp2, ...) SELECT ....
curl --location-trusted -u root: -H "label:123" -H "temporary_partitions: tp1, tp2, ..." -T testData http://host:port/api/testDb/testTbl/_stream_load
LOAD LABEL example_db.label1(DATA INFILE("hdfs://hdfs_host:hdfs_port/user/palo/data/input/file")INTO TABLE `my_table`TEMPORARY PARTITION (tp1, tp2, ...)...)WITH BROKER hdfs ("username"="hdfs_user", "password"="hdfs_password");
CREATE ROUTINE LOAD example_db.test1 ON example_tblCOLUMNS(k1, k2, k3, v1, v2, v3 = k1 * 100),TEMPORARY PARTITIONS(tp1, tp2, ...),WHERE k1 > 100PROPERTIES(...)FROM KAFKA(...);
SELECT ... FROMtbl1 TEMPORARY PARTITION(tp1, tp2, ...)JOINtbl2 TEMPORARY PARTITION(tp1, tp2, ...)ON ...WHERE ...;
INSERT INTO 命令将正式分区的数据导入到临时分区中,通过替换操作,原子的替换原有分区,以达到目的。INSERT INTO 命令将正式分区的数据导入到临时分区中,通过替换操作,原子的替换原有分区,以达到目的。文档反馈