Doris动态分区表

简介: Doris动态分区表Doris动态分区表传参

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


1:废话不多说,建表模板如下
create table dwd.dwd_test(
  repay_type varchar(64) comment "还款方式",
  order_cnt bigint comment "还款订单数",
  pt date comment "分区字段"                  -- 必须要带,而且必须是date类型
)
DUPLICATE KEY(repay_type)   -- 明细模型
COMMENT "dwd测试表"
partition by range(pt)()    -- 这个小括号必须要带,支持动静态切换
DISTRIBUTED by HASH(repay_type) BUCKETS 1   -- 也可以在properties中写
PROPERTIES(
  "dynamic_partition.enable" = "true",    -- 是否开启动态分区
  "dynamic_partition.time_unit" = "DAY",    -- 动态分区调度单位 
  "dynamic_partition.start" = "-7",         -- 保留过去7天的数据,可以用来做表的生命周期管理,为负数,如果不填,默认值-2147483648,可以理解为永久保留
  "dynamic_partition.end" = "3",        -- 提前创建分区数 比如在2024-10-26日建表,那么查看表分区 会有p20241026 p20241027 p20241028
  "dynamic_partition.prefix" = "p",     -- 必选项,而且不能为空,通常设置为p
--  "dynamic_parititon.buckets" = "1",      -- 分桶数
  "replication_num" = "1"           -- 副本数
);
2:关于动态分区的查询,支持两种查询方式
-- 1: 通过pt字段查询
select * from test where pt = '2024-10-25';
-- 2: 通过分区查询
select * from test partition p20241025;  -- 注意,这里的表不能加别名 否则会报错
3:插入语句
insert into test partition p20241025 select * from t;
insert overwrite table test partition p20241025 select * from t;
4:参数传递问题

insert overwrite table dwd.dwd_test partition(p${pt})
select
repay_type,
count(distinct order_id) as order_cnt,
'${bizdate}'
from ods.ods_abank_repayment_df partition p${pt}
group by repay_type;

以上为在DBeaver上往动态分区插入数据的语句。因为Doris动态分区配置中,properties中的"dynamic_partition.prefix" 的配置项是必须项,而且不能为空串,所以分区通常是p20241019格式,所以在插入的时候分区参数为p${参数名}的格式传递。

在DolphinScheduler中,全局参数不能设置类型,且会自动把'$[yyyyMMdd]'转为字符串,所以如果通过全局参数配置分区字段的话,会出现'p20241019'或者p'20241019'的情况,导致任务失败。

正确配置方法如下:

1:在当前节点中设置参数,数据类型选择INTEGER

2:注意Dolphin不支持{}的写法,注意使用[]

3:写法还是p${pt}的格式,注意不要带''

4:其他正常格式的参数,按照正常写法'${参数名}'即可,可以在当前节点设置,也可以点保存后在全局参数中配置

相关文章
|
SQL HIVE
Hive分区+根据分区查询
Hive分区+根据分区查询
|
8月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用问题之CTAS特性只支持新增表,不支持删除表吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
调度
Doris给动态分区添加历史分区问题汇总
Doris动态分区表添加历史分区
|
8月前
|
机器学习/深度学习 SQL 分布式计算
MaxCompute产品使用问题之动态分区如何多分区写入
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
124 2
|
SQL 存储 分布式计算
Hive学习---5、分区表和分桶表
Hive学习---5、分区表和分桶表
|
9月前
|
流计算
Flink CDC里关于doris的动态分区问题,对以及建好的动态分区表,可以再次修改历史分区的保留时间嘛?
【1月更文挑战第24天】【1月更文挑战第117篇】Flink CDC里关于doris的动态分区问题,对以及建好的动态分区表,可以再次修改历史分区的保留时间嘛?
285 6
|
9月前
|
SQL 存储 测试技术
提升50%+!Presto如何提升Hudi表查询性能?
提升50%+!Presto如何提升Hudi表查询性能?
189 0
|
9月前
|
SQL 存储 传感器
Hive中的分区表和非分区表有什么区别?请解释其作用和使用场景。
Hive中的分区表和非分区表有什么区别?请解释其作用和使用场景。
277 0
|
SQL 分布式计算 大数据
Hive动态分区
Hive动态分区
144 0
|
SQL 存储 HIVE
Hive内部表与外部表的区别及使用场景
Hive内部表与外部表的区别及使用场景