Doris系列之动态分区操作

发布于:2023-01-10 ⋅ 阅读:(901) ⋅ 点赞:(0)

Doris系列

注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kafka Hbase Hive Flume等等~写的都是纯干货,各种顶会的论文解读,一起进步。
今天和大家分享一下Doris系列之动态分区操作
#博学谷IT学习技术支持



前言

在这里插入图片描述
接着上次的Doris系列继续和大家分享,上一次主要和大家分享了Doris系列之物化视图操作,今天和大家分享一下Doris系列之动态分区操作。


一、动态分区概念

动态分区是在 Doris 0.12 版本中引入的新功能。旨在对表级别的分区实现生命周期管理(TTL),减少用户的使用负担。
目前实现了动态添加分区及动态删除分区的功能。
动态分区只支持 Range 分区。

在某些使用场景下,用户会将表按照天进行分区划分,每天定时执行例行任务,这时需要使用方手动管理分区,否则可能由于使用方没有创建分区导致数据导入失败,这给使用方带来了额外的维护成本。

通过动态分区功能,用户可以在建表时设定动态分区的规则。FE 会启动一个后台线程,根据用户指定的规则创建或删除分区。用户也可以在运行时对现有规则进行变更。

二、使用步骤:

1.以天为单位创建动态分区表

创建一张调度单位为天,可以删除历史分区的动态分区表

CREATE TABLE order_dynamic_partition1
(
id int,
time date,
money double,
areaName varchar(50)
)
duplicate key(id,time)
PARTITION BY RANGE(time)()
DISTRIBUTED BY HASH(id) buckets 10
PROPERTIES(
    "dynamic_partition.enable" = "true",
    "dynamic_partition.time_unit" = "DAY",
    "dynamic_partition.start" = "-7",
    "dynamic_partition.end" = "3",
    "dynamic_partition.prefix" = "p",
    "dynamic_partition.buckets" = "10",
    "replication_num" = "1"
);
SHOW DYNAMIC PARTITION TABLES;

-- 插入数据
insert into order_dynamic_partition1 values(1,'2022-08-18 11:00:00', 100.0, '北京');
insert into order_dynamic_partition1 values(1,'2022-08-19 11:00:00', 100.0, '北京');
insert into order_dynamic_partition1 values(2,'2022-08-20 11:00:00', 200.0, '上海');
insert into order_dynamic_partition1 values(3,'2022-08-21 11:00:00', 500.0, '广州');

在这里插入图片描述
这里保留前7个老的动态分区,加上4个新的动态分区。

2.以星期为单位创建动态分区表

-创建一张调度单位为周,保留最近两周的分区数据

CREATE TABLE order_dynamic_partition2
(
id int,
time date,
money double,
areaName varchar(50)
)
duplicate key(id,time)
PARTITION BY RANGE(time)()
DISTRIBUTED BY HASH(id) buckets 10
PROPERTIES(
    "dynamic_partition.enable" = "true",
    "dynamic_partition.time_unit" = "WEEK",
    "dynamic_partition.start" = "-2",
    "dynamic_partition.end" = "2",
    "dynamic_partition.prefix" = "p",
    "dynamic_partition.buckets" = "10"
);

这里保留前2个老的动态分区,加上3个新的动态分区。

3.以月为单位创建动态分区表

创建一张调度单位为月,不删除历史数据

CREATE TABLE order_dynamic_partition3
(
id int,
time date,
money double,
areaName varchar(50)
)
duplicate key(id,time)
PARTITION BY RANGE(time)()
DISTRIBUTED BY HASH(id) buckets 10
PROPERTIES(
    "dynamic_partition.enable" = "true",
    "dynamic_partition.time_unit" = "MONTH",
    "dynamic_partition.end" = "2",
    "dynamic_partition.prefix" = "p",
    "dynamic_partition.buckets" = "8",
    "dynamic_partition.start_day_of_month" = "3"
);

总结

今天和大家分享一下Doris系列之动态分区操作。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到