首页 > 用户笔记 > KFK的笔记 阅读:52

Doris动态分区问题汇总(5个)

网上关于 Doris 动态分区的文章似乎不太多,而且很多都是从官方文档中借鉴过来的,这段时间自己搭项目,踩过不少 Doris 动态分区表的坑,所以来和大家分享一下。

1. 动态分区使用场景


通常来说,通过日期的自增来作为 Doris 分区的动态生成最为常用,以下基于此场景为例。

2. 如何创建Doris动态分区

create table dwd.dwd_test(
  repay_type varchar(64) comment "还款方式",
  order_cnt bigint comment "还款订单数",
  pt date comment "分区字段"                 
)
DUPLICATE KEY(repay_type) 
COMMENT "dwd测试表"
partition by range(pt)() 
DISTRIBUTED by HASH(repay_type) BUCKETS 1 
PROPERTIES(
  "dynamic_partition.enable" = "true", 
  "dynamic_partition.time_unit" = "DAY",
  "dynamic_partition.start" = "-7",   
  "dynamic_partition.end" = "3", 
  "dynamic_partition.prefix" = "p", 
--  "dynamic_parititon.buckets" = "1",  
  "replication_num" = "1" 
);

3. 动态分区参数详解

4. 创建动态分区表之后,对分区进行增删改

修改动态分区通常分为 4 个步骤。

1) 手动将动态分区转为手动分区模式:
alter table tb_name set ("dynamic_partition.enable" = "false");

2) 创建分区,一种是创建当周期之前所有数据的分区:
alter table tb_name add partition p20250209 values less than ("2025-02-10");  -- 即添加p20250209分区,该分区存放pt< '2025-02-10'的所有数据

3) 一种是创建只存在当周期之内的数据的分区:
alter table tb_name add partition p20250209 values [("2025-02-09"),("2025-02-10");   -- 左闭右开区间

4) 手动将手动分区调整为动态分区:
alter table tb_name set ("dynamic_partition.enable" = "true");

注意:如果需要创建多个分区,推荐创建只存在当周期之内的数据的分区,避免时间段会有冲突,如果当前存在时间段冲突的分区区间,需要具体问题具体分析。
-- 比如说现在需要添加 p20250209  p20250208 p20250207三个历史分区
-- 首先假如p20250209为以上包含< '2025-02-10'的所有数据的情况
alter table tb_name add partition p20250209 values less than ("2025-02-10");
-- 为了避免时段冲突。接下来的两个分区创建如下
alter table tb_name add partition p20250208 values [("2025-02-08"),("2025-02-09"));
alter table tb_name add partition p20250207 values [("2025-02-07"),("2025-02-08"));

5. 往动态分区中写入数据,以DBeaver编辑器为例

insert overwrite table 表名 partition p${pt}  -- 这里不能加'',否则最后的参数是p'2025-02-09'这种格式
select
col1,
col2,
pt
from 表名;
-- 注意,这里的pt值必须要和分区的值保持一致,如果分区值是p20250209  那么pt必须为'2025-02-09',否则报错
注意:往动态分区表中写入数据的时候,如果没有指定分区,会根据 pt 的值插入对应的分区当中。

6. 动态分区表的查询使用

1) 根据分区查询:
select * from 表名 partition p20250209

2) 根据分区值查询:
select * from 表名 where pt = '2025-02-09'

相关文章