Apache Doris 動態分區使用示例
一、Doris分區概述
在某些使用場景下,用戶會將表按照天進行分區划分,每天定時執行例行任務,這時需要使用方手動管理分區,否則可能由於使用方沒有創建分區導致數據導入失敗,這給使用方帶來了額外的維護成本。
通過動態分區功能,用戶可以在建表時設定動態分區的規則。FE 會啟動一個后台線程,根據用戶指定的規則創建或刪除分區。用戶也可以在運行時對現有規則進行變更。動態分區數默認最大500(參數max_dynamic_partition_num (fe.conf))
Doris分區官方手冊:https://doris.apache.org/master/zh-CN/administrator-guide/dynamic-partition.html
一、動態分區創建示例
DROP TABLE IF EXISTS test_dynamic_partition;
CREATE TABLE test_dynamic_partition (
partition_key int(11) NOT NULL COMMENT '分區鍵',
app_code varchar(64) NOT NULL COMMENT '應用編碼',
app_name varchar(255) NULL COMMENT '應用名稱'
)
ENGINE=OLAP
DUPLICATE KEY(partition_key,app_code,app_name)
COMMENT '動態分區示例'
PARTITION BY RANGE(partition_key) ()
DISTRIBUTED BY HASH(partition_key)
PROPERTIES
(
"dynamic_partition.create_history_partition" = "true",
"dynamic_partition.history_partition_num" = "3",
"dynamic_partition.enable" = "true",
"dynamic_partition.time_unit" = "DAY",
"dynamic_partition.start" = "-400",
"dynamic_partition.end" = "3",
"dynamic_partition.prefix" = "p",
"dynamic_partition.buckets" = "1"
);
二、分區信息查看和修改
#查看動態分區表調度情況
SHOW DYNAMIC PARTITION TABLES;
#展示指定db下指定表的所有非臨時分區信息
SHOW PARTITIONS FROM test_dynamic_partition;
#修改分區參數
ALTER TABLE test_dynamic_partition
SET ("dynamic_partition.end" = "4");
#清空表 tbl 的 p20211101 和 p20211102 分區
TRUNCATE TABLE tbl PARTITION(p20211101, p20211102);
#修改單分區表的實際副本數量(只限單分區表):
ALTER TABLE example_db.my_table
SET ("replication_num" = "3");
#修改表的所有分區:
ALTER TABLE example_db.my_table
MODIFY PARTITION(*)
SET ("replication_num" = "3");
ALTER TABLE example_db.my_table
MODIFY PARTITION (*) SET("storage_medium"="HDD");
#修改表的動態分區屬性(支持未添加動態分區屬性的表添加動態分區屬性)
ALTER TABLE example_db.my_table set ("dynamic_partition.enable" = "false");
#如果需要在未添加動態分區屬性的表中添加動態分區屬性,則需要指定所有的動態分區屬性
ALTER TABLE example_db.my_table set (
"dynamic_partition.enable" = "true",
"dynamic_partition.time_unit" = "DAY",
"dynamic_partition.end" = "3",
"dynamic_partition.prefix" = "p",
"dynamic_partition.buckets" = "32"
);