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

相关文章
|
canal SQL 关系型数据库
Canal报错总结(三)
Canal报错总结(三)
|
消息中间件 关系型数据库 Kafka
Flink CDC可以从Kafka消费数据并写入到Doris中
Flink CDC可以从Kafka消费数据并写入到Doris中
934 2
|
存储 监控 数据处理
flink 向doris 数据库写入数据时出现背压如何排查?
本文介绍了如何确定和解决Flink任务向Doris数据库写入数据时遇到的背压问题。首先通过Flink Web UI和性能指标监控识别背压,然后从Doris数据库性能、网络连接稳定性、Flink任务数据处理逻辑及资源配置等方面排查原因,并通过分析相关日志进一步定位问题。
869 61
|
存储 固态存储 关系型数据库
Apache Doris 系列: 入门篇-安装部署
Apache Doris 系列: 入门篇-安装部署
3911 0
|
存储 SQL 算法
一文教你玩转 Apache Doris 分区分桶新功能|新版本揭秘
一文教你玩转 Apache Doris 分区分桶新功能|新版本揭秘
1175 0
|
存储 运维 数据处理
Apache Paimon:重塑阿里智能引擎数据处理新纪元,解锁高效存储与实时分析潜能!
【8月更文挑战第2天】探索 Apache Paimon 在阿里智能引擎的应用场景
560 2
|
SQL Apache 数据库
doris数据库的表重命名语法是什么
【6月更文挑战第24天】doris数据库的表重命名语法是什么
2879 0
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之报错:“Data row is smaller than a column index”如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
727 2
|
SQL 分布式计算 数据处理
【Hive】所有的Hive任务都会有MapReduce的执行吗?
【4月更文挑战第17天】【Hive】所有的Hive任务都会有MapReduce的执行吗?