Doris系列之动态分区操作

Doris系列

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


文章目录

  • Doris系列
  • 前言
  • 一、动态分区概念
  • 二、使用步骤:
    • 1.以天为单位创建动态分区表
    • 2.以星期为单位创建动态分区表
    • 3.以月为单位创建动态分区表
  • 总结


前言

Doris系列之动态分区操作_第1张图片
接着上次的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, '广州');

Doris系列之动态分区操作_第2张图片
这里保留前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系列之动态分区操作。

你可能感兴趣的:(Java和大数据,大数据,数据库)