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

news2025/1/12 10:42:33

目录

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.coloradmin.cn/o/2244733.html

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

相关文章

第二十周:机器学习

目录 摘要 ABSTRACT 一、吴恩达机器学习exp2——逻辑回归 1、logistic函数 2、数据预处理 3、损失函数 4、梯度下降 5、设定评价指标 6、决策边界 7、正则化 二、动手深度学习pytorch——数据预处理 1、数据集读取 2、缺失值处理 3、转换为张量格式 总结 摘要…

反转链表、链表内指定区间反转

反转链表 给定一个单链表的头结点pHead&#xff08;该头节点是有值的&#xff0c;比如在下图&#xff0c;它的val是1&#xff09;&#xff0c;长度为n&#xff0c;反转该链表后&#xff0c;返回新链表的表头。 如当输入链表{1,2,3}时&#xff0c;经反转后&#xff0c;原链表变…

VScode学习前端-01

小问题合集&#xff1a; vscode按&#xff01;有时候没反应&#xff0c;有时候出来&#xff0c;是因为------>必须在英文状态下输入&#xff01; 把鼠标放在函数、变量等上面&#xff0c;会自动弹出提示&#xff0c;但挡住视线&#xff0c;有点不习惯。 打开file->pre…

【AI图像生成网站Golang】JWT认证与令牌桶算法

AI图像生成网站 目录 一、项目介绍 二、雪花算法 三、JWT认证与令牌桶算法 四、项目架构 五、图床上传与图像生成API搭建 六、项目测试与调试(等待更新) 三、JWT认证与令牌桶算法 在现代后端开发中&#xff0c;用户认证和接口限流是确保系统安全性和性能的两大关键要素…

基于Kafka2.1解读Consumer原理

文章目录 概要整体架构流程技术名词解释技术细节coordinatorfetcherclientconsumer#poll的主要流程 全局总览小结 概要 继上一篇讲Producer原理的文章过去已经一个多月了&#xff0c;今天来讲讲Consumer的原理。 其实源码早就读了部分了&#xff0c;但是最近工作比较忙&#x…

测试使用vite搭建的uni-app打包app区分开发环境和生产环境

用脚手架搭建的uniapp项目&#xff0c;打包H5和小程序可以和web端一样&#xff0c;能够通过env.dev和env.prod区分开发环境和生产环境&#xff0c;但是不知道打包成app时如何区分开发环境和生产环境&#xff0c;在此做一个测试记录。 打开package.json文件&#xff0c;在scrip…

【提效工具开发】管理Python脚本执行系统实现页面展示

Python脚本执行&#xff1a;工具管理Python脚本执行系统 背景 在现代的软件开发和测试过程中&#xff0c;自动化工具和脚本的管理变得至关重要。为了更高效地管理工具、关联文件、提取执行参数并支持动态执行Python代码&#xff0c;我们设计并实现了一套基于Django框架的工具…

Qt-常用的显示类控件

QLabel QLabel有如下核心属性&#xff1a; 关于文本格式的验证&#xff1a; 其中<b>xxx<b>&#xff0c;就是加粗的意思。 效果&#xff1a; 或者再把它改为markdown形式的&#xff1a; 在markd中&#xff0c;#就是表示一级标题&#xff0c;我们在加上##后&#x…

2024 RISC-V中国峰会 安全相关议题汇总

安全之安全(security)博客目录导读 第四届 RISC-V 中国峰会(RISC-V Summit China 2024)于8月21日至23日在杭州成功举办。此次峰会汇聚了 RISC-V 国际基金会、百余家重点企业及研究机构,约3000人线下参与,并在19日至25日间举办了超过20场同期活动,与全球开发者共同…

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

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

典型的 SOME/IP 多绑定用例总结

SOME/IP 部署中 AP SWC 不自行打开套接字连接的原因 在典型的 SOME/IP 网络协议部署场景里&#xff0c;AP SWC 不太可能自己打开套接字连接与远程服务通信&#xff0c;因为 SOME/IP 被设计为尽可能少用端口。这一需求源于低功耗 / 低资源的嵌入式 ECU&#xff0c;并行管理大量…

MySQL查询执行(八):Memory引擎

思考&#xff1a;两个group by语句都用了order bynull&#xff0c; 为什么使用内存临时表得到的语句结果里&#xff0c; 0这个值在最后一行&#xff1b; 而使用磁盘临时表得到的结果里&#xff0c; 0这个值在第一行&#xff1f; 答&#xff1a;答案对应第一小节&#xff1a;内…

canva 画图 UI 设计

起因&#xff0c; 目的: 来源: 客户需求。 目的&#xff1a; 用数据讲故事。 数据可以瞎编&#xff0c;图表一定要漂亮。 文件分享地址 读者可以在此文件的基础上&#xff0c;继续编辑。 效果图 过程: 我还是喜欢 canva. figma&#xff0c; 我用的时候&#xff0c;每每都想…

ES分词环境实战

文章目录 安装下载1.1 下载镜像1.2 单节点启动 防火墙设置异常处理【1】iptable链路中断 参考文档 参加完2024年11月软考&#xff0c;对ES的分词进行考查&#xff0c;前期有【 Docker 环境下安装部署 Elasticsearch 和 kibana】和【 Docker 环境下为 Elasticsearch 安装IK 分…

论文精读: PRB LiVSe2 Zigzag链序实验与理论计算

DOI: 10.1103/PhysRevB.108.094107 摘要节选 在具有轨道自由度的过渡金属化合物中&#xff0c;组成元素在低温下自组装形成分子的现象普遍存在。 在本研究中从实验和理论两方面讨论了钒二维三角形晶格层状LiVX2 &#xff08;X O&#xff0c; S, Se&#xff09;体系中出现的三…

修改一下达梦disql 提示符

经常用disql的有时某些信息希望提示一下&#xff0c;默认的只显示SQL> 为了方便使用&#xff0c;可以在 glogin.sql 中增加些内容。 vi $DM_HOME/bin/disql_conf/glogin.sql增加以下几行 set time on set lineshow offcol global_name new_value global_name SELECT ins…

【蓝桥杯备赛】123(前缀和的复杂应用)

5. 前缀和的复杂应用 5.1. 123&#xff08;4 星&#xff09; 5.1.1. 题目解析 这道题仍然是求一段区间的和&#xff0c;很容易能够想到前缀和找规律&#xff1a; 1------------------1 号块 1 2----------------2 号块 1 2 3--------------3 号块 1 2 3 4------------4 号…

机器学习—学习曲线

学习曲线是帮助理解学习算法如何工作的一种方法&#xff0c;作为它所拥有的经验的函数。 绘制一个符合二阶模型的学习曲线&#xff0c;多项式或二次函数&#xff0c;画出交叉验证错误Jcv&#xff0c;以及Jtrain训练错误&#xff0c;所以在这个曲线中&#xff0c;横轴将是Mtrai…

数据库基础(MySQL)

1. 数据库基础 1.1 什么是数据库 存储数据用文件就可以了&#xff0c;为什么还要弄个数据库? 文件保存数据有以下几个缺点&#xff1a; 文件的安全性问题文件不利于数据查询和管理文件不利于存储海量数据文件在程序中控制不方便 数据库存储介质&#xff1a; 磁盘内存 为…

2024年11月HarmonyOS应用开发者基础认证全新题库

注意事项&#xff1a;切记在考试之外的设备上打开题库进行搜索&#xff0c;防止切屏三次考试自动结束&#xff0c;题目是乱序&#xff0c;每次考试&#xff0c;选项的顺序都不同 更新时间&#xff1a;2024年11月1日 这是基础认证题库&#xff0c;不是高级认证题库注意看清楚标…