Doris动态分区DYNAMIC PARTITION结果没有自动创建出当前分区

news2024/11/26 3:29:26

版本:Doris Version: 2.1.2

环境:DorisFE 2台 DorisBE 4台

Doris集群版本搭建详细教程:Apache Doris 2.x 版本【保姆级】安装+使用教程_system has no available disk capacity or no availa-CSDN博客

在确认服务器资源都没有问题的情况下,发生下面情况:

一:问题复现:

在2024-04月时,Doris数据库升级到了2.1.2版本。这次版本升级可能引发了一些问题,影响到了动态分区的创建。通常情况下,系统会根据我的设置自动每月创建未来两个月的分区,但到了7月份时,分区未能正常创建,导致数据无法正确写入。简单来说,就是在4月份的时候我的动态分区的表根据我设置的"dynamic_partition.end" = "2"值已经创建好了5、6月的分区,之后我升级到了1.2.1。之后5月6月没有在继续创建动态分区,以至于在当前7月份数据没有成功写入。


二:问题原因:

问题追溯:

此问题涉及到创建分区表时使用的关键配置项 dynamic_partition.start 和 dynamic_partition.history_partition_num。由于去年对 dynamic_partition.start 的设置值与当时时间的间隔过短,这可能导致分区失效。比如我当时设置的dynamic_partition.start = -10,则分区范围在次偏移之前的分区将会被删除,也就是说-10只保存历史10个分区。所以当时发现这个问题后将 start 值调整为 -656521,以尝试解决这一问题。

问题原因:

在 Doris 2.1.2 版本中,由于 "dynamic_partition.start" 的值设定为 "-656521" 过小,这导致了问题。在此版本中,"dynamic_partition.start" 的值不应过小,因为如果当前时间加上这个偏移值超过了1970-01-01,系统可能会出现问题。"dynamic_partition.history_partition_num" 的情况也是类似的。理论上,start 和 history_partition_num 两者功能相似,我们推荐只保留其中一个即可。
由于 start 值过小,导致了动态分区的轮询线程异常终止,从而不再执行其他表的操作。为解决这个问题,只需将这些值调整到合适的范围,避免设置过小,即可恢复正常。

而数据没有写入进去,在DorisFE的fe.warn.log中有详细报错:

2024-07-04 11:13:37,845 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIME]; keys: [3438-04-01 00:00:00]; ..types: [DATETIME]; keys: [2024-10-01 00:00:00]; ), db: gxy_history, table: gxy_job
2024-07-04 11:13:37,857 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIME]; keys: [3438-04-01 00:00:00]; ..types: [DATETIME]; keys: [2024-10-01 00:00:00]; ), db: core_db, table: person_educations_tmp
2024-07-04 11:13:37,864 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIME]; keys: [3438-04-01 00:00:00]; ..types: [DATETIME]; keys: [2024-10-01 00:00:00]; ), db: core_db, table: persons_20240701
2024-07-04 11:13:37,866 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIME]; keys: [3438-04-01 00:00:00]; ..types: [DATETIME]; keys: [2024-10-01 00:00:00]; ), db: gxy_history, table: gxy_students
2024-07-04 11:13:37,874 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIMEV2]; keys: [3438-04-01 00:00:00]; ..types: [DATETIMEV2]; keys: [2024-10-01 00:00:00]; ), db: core_db, table: person_educations_20240703
2024-07-04 11:13:37,883 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIMEV2]; keys: [3438-04-01 00:00:00]; ..types: [DATETIMEV2]; keys: [2024-10-01 00:00:00]; ), db: core_db, table: persons_demo
2024-07-04 11:13:37,889 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIMEV2]; keys: [3438-04-01 00:00:00]; ..types: [DATETIMEV2]; keys: [2024-10-01 00:00:00]; ), db: core_db, table: persons_20240628
2024-07-04 11:13:37,896 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIMEV2]; keys: [3438-04-01 00:00:00]; ..types: [DATETIMEV2]; keys: [2024-10-01 00:00:00]; ), db: core_db, table: person_jobs
2024-07-04 11:13:37,934 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIME]; keys: [3438-04-01 00:00:00]; ..types: [DATETIME]; keys: [2024-10-01 00:00:00]; ), db: gxy_history, table: gxy_students_old
2024-07-04 11:13:37,940 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIMEV2]; keys: [3438-04-01 00:00:00]; ..types: [DATETIMEV2]; keys: [2024-10-01 00:00:00]; ), db: core_db, table: person_jobs_old
2024-07-04 11:13:37,947 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIME]; keys: [3438-04-01 00:00:00]; ..types: [DATETIME]; keys: [2024-10-01 00:00:00]; ), db: core_db, table: person_educations_20240628
2024-07-04 11:13:37,966 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIME]; keys: [3438-04-01 00:00:00]; ..types: [DATETIME]; keys: [2024-10-01 00:00:00]; ), db: core_db, table: enterprise_bak
2024-07-04 11:13:37,980 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIMEV2]; keys: [3438-04-01 00:00:00]; ..types: [DATETIMEV2]; keys: [2024-10-01 00:00:00]; ), db: core_db, table: person_jobs_20240701
2024-07-04 11:13:37,994 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIMEV2]; keys: [3438-04-01 00:00:00]; ..types: [DATETIMEV2]; keys: [2024-10-01 00:00:00]; ), db: core_db, table: person_educations
2024-07-04 11:13:37,998 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIMEV2]; keys: [3438-04-01 00:00:00]; ..types: [DATETIMEV2]; keys: [2024-10-01 00:00:00]; ), db: core_db, table: persons_2
2024-07-04 11:13:38,005 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIME]; keys: [3438-04-01 00:00:00]; ..types: [DATETIME]; keys: [2024-10-01 00:00:00]; ), db: gxy_history, table: gxy_plan_teacher_student
2024-07-04 11:13:38,017 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIMEV2]; keys: [3438-04-01 00:00:00]; ..types: [DATETIMEV2]; keys: [2024-10-01 00:00:00]; ), db: core_db, table: persons_20240703
2024-07-04 11:13:38,019 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIMEV2]; keys: [3438-04-01 00:00:00]; ..types: [DATETIMEV2]; keys: [2024-10-01 00:00:00]; ), db: core_db, table: person_jobs_20240703
2024-07-04 11:13:38,024 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIMEV2]; keys: [3438-04-01 00:00:00]; ..types: [DATETIMEV2]; keys: [2024-10-01 00:00:00]; ), db: core_db, table: persons
2024-07-04 11:13:38,033 WARN (DynamicPartitionScheduler|40) [DynamicPartitionScheduler.getDropPartitionClause():440] Error in gen reservePartitionKeyRange. Error=Invalid range: [types: [DATETIME]; keys: [3438-04-01 00:00:00]; ..types: [DATETIME]; keys: [2024-10-01 00:00:00]; ), db: core_db, table: persons_candidate
2024-07-04 11:13:38,036 ERROR (DynamicPartitionScheduler|40) [Daemon.run():118] daemon thread got exception. name: DynamicPartitionScheduler
org.apache.doris.nereids.exceptions.AnalysisException: date/datetime literal [+52687-06-01 00:00:00] is invalid
	at org.apache.doris.nereids.trees.expressions.literal.DateLiteral.normalize(DateLiteral.java:202) ~[doris-fe.jar:1.2-SNAPSHOT]
	at org.apache.doris.nereids.trees.expressions.literal.DateTimeLiteral.determineScale(DateTimeLiteral.java:107) ~[doris-fe.jar:1.2-SNAPSHOT]
	at org.apache.doris.nereids.types.DateTimeV2Type.forTypeFromString(DateTimeV2Type.java:90) ~[doris-fe.jar:1.2-SNAPSHOT]
	at org.apache.doris.nereids.trees.expressions.literal.DateTimeV2Literal.<init>(DateTimeV2Literal.java:38) ~[doris-fe.jar:1.2-SNAPSHOT]
	at org.apache.doris.catalog.PartitionKey.getDateTimeLiteral(PartitionKey.java:121) ~[doris-fe.jar:1.2-SNAPSHOT]
	at org.apache.doris.catalog.PartitionKey.createPartitionKey(PartitionKey.java:99) ~[doris-fe.jar:1.2-SNAPSHOT]
	at org.apache.doris.clone.DynamicPartitionScheduler.getDropPartitionClause(DynamicPartitionScheduler.java:431) ~[doris-fe.jar:1.2-SNAPSHOT]
	at org.apache.doris.clone.DynamicPartitionScheduler.executeDynamicPartition(DynamicPartitionScheduler.java:555) ~[doris-fe.jar:1.2-SNAPSHOT]
	at org.apache.doris.clone.DynamicPartitionScheduler.runAfterCatalogReady(DynamicPartitionScheduler.java:641) ~[doris-fe.jar:1.2-SNAPSHOT]
	at org.apache.doris.common.util.MasterDaemon.runOneCycle(MasterDaemon.java:58) ~[doris-fe.jar:1.2-SNAPSHOT]
	at org.apache.doris.common.util.Daemon.run(Daemon.java:116) ~[doris-fe.jar:1.2-SNAPSHOT]


从日志中可以观察到,由于 "dynamic_partition.start" 值过小,导致动态分区的轮询线程daemon thread got exception. name: DynamicPartitionScheduler出现故障,进而停止执行后续其他表的操作。为了解决这个问题,您需要调整这些配置值,确保它们不要设置得太小,这样可以避免类似的系统异常和操作中断。

可以通过命令看到,这时候我大部分表的dynamic_partition.start值都是-656521。

-- 查看所有表分区状态
SHOW DYNAMIC PARTITION TABLES;

问题本质:

问题本质上是由于一个特定表(我们称其为A表)的start配置-656521,这个错误引起的连锁反应,导致另一个表(B表)的分区创建和删除操作未能成功执行。哪怕B表的start配置不是-656521。根据源码判断,这个问题的处理流程如下:

  1. 假设A表在B表前被调度;
  2. A表成功创建新分区;
  3. A表删除历史分区失败;
  4. 影响到B表的操作:由于第三步A在删除历史分区时发生故障,导致系统的调度程序未能继续对后续表(如B)执行分区创建和删除操作。
  5. B的分区操作被跳过:由于第三步A在删除历史分区时发生故障,导致B表本应执行的创建新分区和删除旧分区操作均被系统跳过。

问题修复:

通过命令将Doris下所有库下start值过小的表全部重新设置"dynamic_partition.start"值

ALTER TABLE table_name SET ("dynamic_partition.start" = "-240"); 

查看结果:

修复完成之后,可以看到没有start值过小的数据了。

 查看表结构,也已经自动创建了未来两个月的分区。成功修复了该问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1892768.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【elementui】记录解决el-tree开启show-checkbox后,勾选一个叶结点后会自动折叠的现象

第一种解决方案&#xff1a;设置default-expand-keys的值为当前选中的key值即可 <el-treeref"tree"class"checkboxSelect-wrap":data"treeData"show-checkboxnode-key"id":expand-on-click-node"true":props"defau…

为什么不能在foreach中删除元素

文章目录 快速失败机制&#xff08;fail-fast&#xff09;for-each删除元素为什么报错原因分析逻辑分析 如何正确的删除元素remove 后 breakfor 循环使用 Iterator 总结 快速失败机制&#xff08;fail-fast&#xff09; In systems design, a fail-fast system is one which i…

ubnutu20.04-vscode安装leetcode插件流程

1.在vscode插件商城选择安装leetcode 2.安装node.js 官网下载一个版本安装流程&#xff1a; ①tar -xvf node-v14.18.0-linux-x64.tar.xz ①sudo ln -s /app/software/nodejs/bin/npm /usr/local/bin/ ②ln -s /app/software/nodejs/bin/node /usr/local/bin/ 查看版本&…

【vue3|第15期】Vue3模板语法入门指南

日期:2024年7月2日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^ 1.01365 = 37.7834;0.99365 = 0.0255 1.02365 = 1377.4083…

sql-语句

文章目录 SQL语句的学习sql是什么sql的内置命令sql的种类sql mode库&#xff0c;表属性介绍&#xff1a;字符集&#xff0c;存储引擎列的数据类型&#xff1a;数字&#xff0c;字符串&#xff0c;时间列的约束DDL: 数据定义语言库表 Online DDL(ALGORITHM) *DML :数据操纵语言资…

如何在Lazada平台快速出单?测评助力商家突破销量瓶颈

Lazada在短短的几年里已经发展成了东南亚地区最大的在线购物网站之一 &#xff0c;很多商家也想要在这样一个大的跨境平台上发展。那么&#xff0c;对于希望在Lazada平台上大展拳脚的商家而言&#xff0c;出单是否容易呢? ​一、Lazada出单容易吗? Lazada出单的难易程度并非…

Linux运维之需掌握的基本Linux命令

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 目录 一、SHELL 二、执行命令 三、常用系统工作命令 四、系统状态检测命令 五、查找定位文件命令 六、文本文件编辑命令 七、文件目录管理命令…

一篇轻松上手 Xorbits库让大规模数据处理更简单.

Xorbits 是一个用于大规模数据处理和计算的 Python 库,旨在提供高效、灵活的分布式计算框架.它类似于Dask 和 Apache Spark,允许用户使用简单的 Python 代码处理大规模数据集. 安装 Xorbits pip install xorbits以下是一个简单的示例,演示如何使用 Xorbits 进行基本的数据处…

网口串口(Serialport)服务器

文章所用工具http://t.csdnimg.cn/2gIR8http://t.csdnimg.cn/2gIR8 搭建服务器界面 操作配置文件保存方式类 public string FileName { get; set; }public IniHelper(string name) {this.FileName name; //在构造函数中给路径赋值} 1 先导入c语言进行读取操作ini文件的方法 …

第三十四篇-学习构建自己的Agent

agentica v0.1 版本升级&#xff1a; https://github.com/shibing624/agentica &#xff08;原项目名&#xff1a;actionflow&#xff09; agentica是一个Agent构建工具&#xff0c;功能&#xff1a; 简单代码快速编排Agent&#xff0c;支持 Reflection(反思&#xff09;、P…

RocketMQ 顺序消息

顺序消息 顺序消息为云消息队列 RocketMQ 版中的高级特性消息&#xff0c;本文为您介绍顺序消息的应用场景、功能原理、使用限制、使用方法和使用建议。 应用场景 在有序事件处理、撮合交易、数据实时增量同步等场景下&#xff0c;异构系统间需要维持强一致的状态同步&#…

LeetCode热题100刷题5:189. 轮转数组、238. 除自身以外数组的乘积、41. 缺失的第一个正数

189. 轮转数组 两次翻转&#xff0c;借助swap实现reverse class Solution { public:void reverse(vector<int>& nums, int left, int right) {int ileft, j right-1;while(i<j) {swap(nums[i],nums[j]);i;j--;}}void rotate(vector<int>& nums, int…

1105 链表合并

solution P1075的简单变形 #include<iostream> #include<vector> #include<algorithm> using namespace std; struct node{int data, next; }list[100000]; int main(){int first1, first2, n, addr;vector<int> l1, l2, ans;scanf("%d%d%d&quo…

[软件安装]linux下安装steam

1、下载安装包到linux系统 SteamTools 发行版 - Gitee.com 2、选择对应的版本 3、解压安装包steam &#xff08;1&#xff09;在opt路径下新建一个文件夹 sudo mkdir steam &#xff08;2&#xff09;进入压缩包路径下&#xff0c;打开终端&#xff0c;执行以下代码进行解压…

使用Fiddler的ImageView轻松获取抓包中的图片详情信息以及一些图片优化建议

使用过Fiddler中的同学是否遇到过下面的问题&#xff1a; 抓包的请求为获取图片信息时&#xff0c;该如何判断图片显示的是什么内容呢&#xff1f;图片是否需要优化来提升前端展示性能呢&#xff1f;常用的图片优化方案有哪些&#xff1f; 本文就带大家搞定上面的这些问题&am…

【VUE3】uniapp + vite中 uni.scss 使用 /deep/ 不生效(踩坑记录三)

vite 中使用 /deep/ 进行样式穿透报错 原因&#xff1a;vite 中不支持&#xff0c;换成 ::v-deep 或:deep即可

echarts阶段仪表图

echarts阶段仪表图 – 效率图 1、先上效果展示 2、完整源码奉上 Vue2 echarts 5 <template><div ref"gaugeChart" style"width: 100%; height: 100%"></div> </template><script> import * as echarts from "echar…

美工画师必看!AI绘画Stable Diffusion 一键生成 B 端图标教程,轻松制作商业可用的设计图标,从此告别加班!(附安装包)

大家好&#xff0c;我是画画的小强 在日常工作中&#xff0c;设计师在应对运营和UI设计的B端图标时&#xff0c;常常面临大量的构思、制作和渲染等工作&#xff0c;耗时耗力。我们可以利用Stable Diffusion(以下简称SD)结合AI的方式&#xff0c;帮助设计师优化图标的设计流程&…

LLM4Decompile——专门用于反编译的大规模语言模型

概述 论文地址&#xff1a;https://arxiv.org/abs/2403.05286 反编译是一种将已编译的机器语言或字节码转换回原始高级编程语言的技术。该技术用于分析软件的内部工作原理&#xff0c;尤其是在没有源代码的情况下&#xff1b;Ghidra 和 IDA Pro 等专用工具已经开发出来&#…

PyCharm社区版Cython支持

自己在文件类型中加一个&#xff0c;名称叫【pythonC】 &#xff0c;文件名模式这一栏要加*.pyx的后缀&#xff0c;之后双击【pythonC】编辑这个文件类型 这里1、2、3、4配置如下 # 1 " # &*, - / : ; <>[ ] { }# 2 False None True and as assert break cdef …