【Apache Paimon】-- 6 -- 清理过期数据

目录

1、简要介绍

2、操作方式和步骤

2.1、调整快照文件过期时间

2.2、设置分区过期时间

2.2.1、举例1

2.2.2、举例2

2.3、清理废弃文件

3、参考


1、简要介绍

      清理 paimon (表)过期数据可以释放存储空间,优化资源利用并提升系统运行效率等。本文将介绍如何清理 Paimon 表过期的数据,包括:

  • (1)调整快照文件过期时间
  • (2)设置分区的过期时间
  • (3)以及清理废弃文件

2、操作方式和步骤

2.1、调整快照文件过期时间

注意:为了保证快照能准确地还原历史状态,快照文件存在期间,其关联的历史数据文件不可删除。

      以下参数决定了快照文件的过期时间。我们可以通过2种方式修改:

(1) ALTER TABLE 语句修改这些参数

(2)在写入作业中通过SQL Hints临时修改这些参数

参数

说明

数据类型

默认值

snapshot.num-retained.min

至少保留几个快照文件。

Integer

10

snapshot.num-retained.max

至多保留几个快照文件。

Integer

2147483647

snapshot.time-retained

一个快照文件最长保留多久。

Duration

1h

         在当前快照文件数量多于 snapshot.num-retained.min 的前提下,只要当前快照文件数量多于 snapshot.num-retained.max ,或最早的快照文件产出时间超过了 snapshot.time-retained,就会触发快照清理。

      下面的示例:

snapshot.num-retained.min = 2

snapshot.time-retained =1h

snapshot.num-retained.max = 5

我使用 tuple (snapshotId, corresponding time) 表示 snapshot item 信息

2.2、设置分区过期时间

        如果我们的业务只关心最近一段时间内的数据,那么可以按时间对数据进行分区,并设置分区过期时间以自动删除过于久远的历史分区,从而释放存储空间,高效地利用存储,以降低成本。

非常重要: 只有包含分区过期事件的快照文件也过期了,分区中的数据文件才会被真正删除。

        以下参数决定了快照文件的过期时间。我们可以通过2种方式修改:

(1) ALTER TABLE 语句修改这些参数

(2)在写入作业中通过SQL Hints临时修改这些参数

参数

说明

备注

partition.expiration-strategy

分区过期策略,默认是

values-time

取值包括:
values-time:将分区值提取的时间与当前时间进行比较。
update-time:该策略将分区的最后更新时间与当前时间进行比较。

partition.expiration-time

分区的过期时间。

参数值为时间长度,例如12h7d等。

partition.timestamp-pattern

将分区值转换为时间字符串的格式串。

在该格式串中,分区列由 $ 加上列名表示。

partition.timestamp-formatter

将时间字符串转换为时间戳的格式串。

  • 如果该参数没有设置,默认尝试yyyy-MM-dd HH:mm:ssyyyy-MM-dd两个格式串。

  • 任何Java的DateTimeFormatter兼容的格式串都可以使用。

       当分区的存活时长超过分区的过期时间参数值时,该分区将被删除。分区的存活时长等于当前系统时间减去分区值转化后的时间戳。分区值转化成时间戳的逻辑如下:

  • 通过 partition.timestamp-pattern 参数指定的格式串,将一个分区值转换为时间字符串。
  • 通过 partition.timestamp-formatter 参数指定的格式串,将时间字符串转换为时间戳。

2.2.1、举例1

  • 假设分区列由dt一列组成,可以设置'partition.timestamp-pattern' = '$dt'将分区dt=20241108 转化为字符串20241108,设置'partition.timestamp-formatter' = 'yyyyMMdd'将该字符串转换为时间戳。

  • 假设分区列由yearmonth 和 day 三列组成,可以设置'partition.timestamp-pattern' = '$year-$month-$day',将分区year=2024,month=11,day=21转化为字符串2024-11-21。此时不需要设置partition.timestamp-formatter,因为该字符串符合默认格式之一的yyyy-MM-dd

  • 假设分区列由yearmonthdayhour四列组成,可以设置'partition.timestamp-pattern' = '$year-$month-$day $hour:00:00',将分区year=2024,month=11,day=21,hour=17转换为字符串 2024-11-21 17:00:00。此时不需要设置partition.timestamp-formatter,因为该字符串符合默认格式之一的yyyy-MM-dd HH:mm:ss

2.2.2、举例2

-- 默认策略1: value-time
CREATE TABLE t (...) PARTITIONED BY (dt) WITH ('partition.expiration-time' = '7 d','partition.expiration-check-interval' = '1 d','partition.timestamp-formatter' = 'yyyyMMdd'   -- this is required in `values-time` strategy.
);
-- Let's say now the date is 2024-07-09,so before the date of 2024-07-02 will expire.
insert into t values('pk', '2024-07-01');-- An example for multiple partition fields
CREATE TABLE t (...) PARTITIONED BY (other_key, dt) WITH ('partition.expiration-time' = '7 d','partition.expiration-check-interval' = '1 d','partition.timestamp-formatter' = 'yyyyMMdd','partition.timestamp-pattern' = '$dt'
);-- 策略2: update-time
CREATE TABLE t (...) PARTITIONED BY (dt) WITH ('partition.expiration-time' = '7 d','partition.expiration-check-interval' = '1 d','partition.expiration-strategy' = 'update-time'
);-- The last update time of the partition is now, so it will not expire.
insert into t values('pk', '2024-01-01');
-- Support non-date formatted partition.
insert into t values('pk', 'par-1'); 

2.3、清理废弃文件

         这种方式主要用于处理 Flink job 出现异常时的情况。由于作业报错重启等原因,Paimon表目录下可能会遗留一些未被提交的临时文件。这些文件无法通过快照过期删除,需手动执行以下步骤进行清理。清理的操作步骤如下:

(1)编辑 SQL 命令

CALL `<catalog-name>`.sys.remove_orphan_files('<database-name>.<table-name>');

说明:

<catalog-name> : Paimon Catalog 的名称

<database-name> :需要清理的 Paimon 表所在的 Database 的名称

<table-name>:需要清理的 Paimon 表的名称。

注意:默认情况下,清理废弃文件只清理创建时间超过1天的废弃文件。我们可以额外传入时间参数,指定最晚创建时间。

举例:下面代码示例展示了清理 myproject.mydb.mytbl 表中,创建时间不晚于 2024-10-31 12:00:00 的废弃文件。

CALL `myproject`.sys.remove_orphan_files('mydb.mytbl', '2024-10-31 12:00:00');

(2)执行 SQL 命令

(3)检查快照文件目录

3、参考

Expire Partition | Apache Paimon

Manage Snapshots | Apache Paimon

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

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

相关文章

Spring Boot整合Kafka,实现单条消费和批量消费,示例教程

如何安装Kafka&#xff0c;可以参考docker搭载Kafka集群&#xff0c;一个文件搞定&#xff0c;超简单&#xff0c;亲试可行-CSDN博客 1、在pom.xml中加入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-sta…

django基于Python的农产品销售系统的设计与实现

摘 要 随着现代人们的快速发展&#xff0c;农产品销售系统已成为农产品的需求。该平台采用Python技术和django搭建系统框架&#xff0c;后台使用MySQL数据库进行信息管理&#xff1b;通过个人中心、用户管理、商家管理、产品类型管理、农产品管理、系统管理、订单管理等功能&a…

项目-摄像

树莓派摄像头使用方法 Camera教程 https://www.raspi.cc/index.php?cread&id53&page1 nanopc-t4 ​https://www.raspi.cc/index.php?cread&id53&page1 摄像头型号 Raspberry Pi Camera Rev 1.3 检测故障 dmesg | grep -i mipi piNanoPC-T4:~$ dmesg | …

Facebook商城号封号的原因是什么?

Facebook商城作为一个重要的销售平台&#xff0c;不仅为商家提供了巨大的市场机会&#xff0c;也带来了一系列需要警惕的风险&#xff0c;其中包括账号被封的风险。本文将从环境异常、频繁操作和违规行为三个主要方面深入探讨&#xff0c;解析导致Facebook商城账号被封禁的具体…

聊一聊Elasticsearch的索引分片的恢复机制

1、什么是索引分片的恢复&#xff1f; 所谓索引分片的恢复指的是在某些条件下&#xff0c;索引分片丢失&#xff0c;ES会把某索引的分片复制一份来得到该分片副本的过程。 2、触发分片恢复的场景有哪些&#xff1f; 分片的分配 当集群中节点的数量发生变化&#xff0c;或者配…

字符串的基本操作(C语言版)

一、实验内容&#xff1a; 采用顺序结构存储串&#xff0c;编写一个函数substring(strl,str2)&#xff0c;用于判定str2是否为strl的子串&#xff1b;编写一个函数&#xff0c;实现在两个已知字符串中找出所有非空最长公共子串的长度和最长公共子串的个数&#xff1b; ①字符…

一些任务调度的概念杂谈

任务调度 1.什么是调度任务 依赖&#xff1a;依赖管理是整个DAG调度的核心。调度依赖包括依赖策略和依赖区间。 依赖分为任务依赖和作业依赖&#xff0c;任务依赖是DAG任务本身的依赖关系&#xff0c;作业依赖是根据任务依赖每天的作业产生的。两者在数据存储模型上有所不同…

解决 npm xxx was blocked, reason: xx bad guy, steal env and delete files

问题复现 今天一位朋友说&#xff0c;vue2的老项目安装不老依赖&#xff0c;报错内容如下&#xff1a; npm install 451 Unavailable For Legal Reasons - GET https://registry.npmmirror.com/vab-count - [UNAVAILABLE_FOR_LEGAL_REASONS] vab-count was blocked, reas…

o1的风又吹到多模态,直接吹翻了GPT-4o-mini

开源LLaVA-o1&#xff1a;一个设计用于进行自主多阶段推理的新型VLM。与思维链提示不同&#xff0c;LLaVA-o1独立地参与到总结、视觉解释、逻辑推理和结论生成的顺序阶段。 LLaVA-o1超过了一些更大甚至是闭源模型的性能&#xff0c;例如Gemini-1.5-pro、GPT-4o-mini和Llama-3.…

共建智能软件开发联合实验室,怿星科技助力东风柳汽加速智能化技术创新

11月14日&#xff0c;以“奋进70载&#xff0c;智创新纪元”为主题的2024东风柳汽第二届科技周在柳州盛大开幕&#xff0c;吸引了来自全国的汽车行业嘉宾、技术专家齐聚一堂&#xff0c;共襄盛举&#xff0c;一同探寻如何凭借 “新技术、新实力” 这一关键契机&#xff0c;为新…

Qt桌面应用开发 第四天(对话框 界面布局)

目录 1.对话框 1.1模拟对话框 1.2非模拟对话框 1.3消息对话框 1.3.1询问对话框 1.3.2严重错误对话框 1.3.3信息提示对话框 1.3.4警告对话框 1.4其他对话框 1.4.1颜色对话框 1.4.2文件对话框 1.4.3字体对话框 1.5界面布局 1.对话框 1.1模拟对话框 会阻塞同一应用…

一文带你快速初步了解云计算与大数据

目录 &#x1f50d;一、云计算基础 1、云计算的概念、特点、关键技术 2、云计算的分类 3、云计算的部署模式 4、云计算的服务模式&#xff1a;IaaS、PaaS、SaaS分别是什么&#xff0c;具体含义要清楚 5、物联网的概念 6、物联网和云计算、大数据的关系 7、了解云计算的…

【新人系列】Python 入门(十一):控制结构

✍ 个人博客&#xff1a;https://blog.csdn.net/Newin2020?typeblog &#x1f4dd; 专栏地址&#xff1a;https://blog.csdn.net/newin2020/category_12801353.html &#x1f4e3; 专栏定位&#xff1a;为 0 基础刚入门 Python 的小伙伴提供详细的讲解&#xff0c;也欢迎大佬们…

VideoCrafter模型部署教程

一、介绍 VideoCrafter是一个功能强大的AI视频编辑和生成工具&#xff0c;它结合了深度学习和机器学习技术&#xff0c;为用户提供了便捷的视频制作和编辑体验。 系统&#xff1a;Ubuntu22.04系统&#xff0c;显卡&#xff1a;4090&#xff0c;显存&#xff1a;24G 二、基础…

机器翻译基础与模型 之二: 基于CNN的模型

一、CNN网络 相比于全连接网络&#xff0c;卷积神经网络最大的特点在于具有局部连接&#xff08;Locally Connected&#xff09;和权值共享&#xff08;Weight Sharing&#xff09;的特性。 1.1 卷积核与卷积操作 1.2 步长与填充 1.3 池化 以上关于CNN的基础概念和技术就不…

Vue 3集成海康Web插件实现视频监控

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;组件封装篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来组件封装篇专栏内容:Vue 3集成海康Web插件实现视频监控 引言 最近在项目中使用了 Vue 3 结合海康Web插件来实…

【Maven】nexus 配置私有仓库配置【转】

介绍&#xff1a;【Maven】Nexus几个仓库的介绍-CSDN博客 一、仓库类型 proxy 远程仓库的代理&#xff0c;比如说nexus配置了一个central repository的proxy,当用户向这个proxy请求一个artifact的时候&#xff0c;会现在本地查找&#xff0c;如果找不到&#xff0c;则会从远程…

Python学习------第十天

数据容器-----元组 定义格式&#xff0c;特点&#xff0c;相关操作 元组一旦定义&#xff0c;就无法修改 元组内只有一个数据&#xff0c;后面必须加逗号 """ #元组 (1,"hello",True) #定义元组 t1 (1,"hello") t2 () t3 tuple() prin…

Spring Web入门练习

加法计算器 约定前后端交互接⼝ 约定 "前后端交互接⼝" 是进⾏ Web 开发中的关键环节. 接⼝⼜叫 API&#xff08;Application Programming Interface), 我们⼀般讲到接⼝或者 API&#xff0c;指的都是同⼀个东西. 是指应⽤程序对外提供的服务的描述, ⽤于交换信息…

uniapp微信小程序接入airkiss插件进行WIFI配网

本文可参考uniapp小程序插件 一.申请插件 微信公众平台设置页链接&#xff1a;微信公众平台 登录您的小程序微信公众平台&#xff0c;进入设置页&#xff0c;在第三方设置->插件管理->添加插件中申请AiThinkerAirkissforWXMini插件&#xff0c;申请的插件appId为【wx6…