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.rhkb.cn/news/475356.html

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

相关文章

阿里云IIS虚拟主机部署ssl证书

宝塔配置SSL证书用起来是很方便的&#xff0c;只需要在站点里就可以配置好&#xff0c;但是云虚拟主机在管理的时候是没有这个权限的&#xff0c;只提供了简单的域名管理等信息。 此处记录下阿里云&#xff08;原万网&#xff09;的IIS虚拟主机如何配置部署SSL证书。 进入虚拟…

BOM的详细讲解

BOM概述 BOM简介 BOM&#xff08;browser Object&#xff09;即浏览器对象模型&#xff0c;它提供了独立于内容而与浏览器窗口进行交互的对象&#xff0c;其核心对象是window。 BOM由一系列的对象构成&#xff0c;并且每个对象都提供了很多方法与属性 BOM缺乏标准&#xff…

湘潭大学软件工程算法设计与分析考试复习笔记(四)

回顾 湘潭大学软件工程算法设计与分析考试复习笔记&#xff08;一&#xff09;湘潭大学软件工程算法设计与分析考试复习笔记&#xff08;二&#xff09;湘潭大学软件工程算法设计与分析考试复习笔记&#xff08;三&#xff09; 前言 现在是晚上十一点&#xff0c;我平时是十…

STM32单片机ADC数模转换器

由于最近忘记了&#xff0c;自用。 转换模式 单次转换&#xff0c;非扫描模式 在非扫描模式下&#xff0c;列表中就只有序列1的位置有效&#xff0c;此时可以在序列1的位置指定我们想要转换的通道&#xff0c;然后ADC就会对这个通道进行模数转换。等待一段时间&#xff0c;转…

android 使用MediaPlayer实现音乐播放--获取音乐数据

前面已经添加了权限&#xff0c;有权限后可以去数据库读取音乐文件&#xff0c;一般可以获取全部音乐、专辑、歌手、流派等。 1. 获取全部音乐数据 class MusicHelper {companion object {SuppressLint("Range")fun getMusic(context: Context): MutableList<Mu…

Spring Boot中使用AOP和反射机制设计一个的幂等注解(两种持久化模式),简单易懂教程

该帖子介绍如何设计利用AOP设计幂等注解&#xff0c;且可设置两种持久化模式 1、普通模式&#xff1a;基于redis的幂等注解&#xff0c;持久化程度较低 2、增强模式&#xff1a;基于数据库&#xff08;MySQL&#xff09;的幂等注解&#xff0c;持久化程度高 如果只需要具有re…

VSCode+ESP-IDF开发ESP32-S3-DevKitC-1(1)开发环境搭建

VSCodeESP-IDF开发ESP32-S3-DevKitC-1&#xff08;1&#xff09;开发环境搭建 1.开发环境搭建&#xff08;安装ESP-IDF&#xff09;2.开发环境搭建&#xff08;安装VS Code&#xff09;3.开发环境搭建&#xff08;VSCode中安装ESP-IDF插件及配置&#xff09; 1.开发环境搭建&am…

论文分享 | FuzzLLM:一种用于发现大语言模型中越狱漏洞的通用模糊测试框架

大语言模型是当前人工智能领域的前沿研究方向&#xff0c;在安全性方面大语言模型存在一些挑战和问题。分享一篇发表于2024年ICASSP会议的论文FuzzLLM&#xff0c;它设计了一种模糊测试框架&#xff0c;利用模型的能力去测试模型对越狱攻击的防护水平。 论文摘要 大语言模型中…

opencv(c++)----图像的读取以及显示

opencv(c)----图像的读取以及显示 imread: 作用&#xff1a;读取图像文件并将其加载到 Mat 对象中。参数&#xff1a; 第一个参数是文件路径&#xff0c;可以是相对路径或绝对路径。第二个参数是读取标志&#xff0c;比如 IMREAD_COLOR 表示以彩色模式读取图像。 返回值&#x…

用源码编译虚幻引擎,并打包到安卓平台

用源码编译虚幻引擎&#xff0c;并打包到安卓平台 前往我的博客,获取更优的阅读体验 作业内容: 源码编译UE5.4构建C项目&#xff0c;简单设置打包到安卓平台 编译虚幻 5 前置内容 这里需要将 Epic 账号和 Github 账号绑定&#xff0c;然后加入 Epic 邀请的组织&#xff0c…

OpenAI震撼发布:桌面版ChatGPT,Windows macOS双平台AI编程体验!

【雪球导读】 「OpenAI推出ChatGPT桌面端」 OpenAI重磅推出ChatGPT桌面端&#xff0c;全面支持Windows和macOS系统&#xff01;这款新工具为用户在日常生活和工作中提供了前所未有的无缝交互体验。对于那些依赖桌面端进行开发工作的专业人士来说&#xff0c;这一更新带来了令人…

【AIGC】破解ChatGPT!如何使用高价值提示词Prompt提升响应质量

文章目录 为什么高价值提示词如此重要&#xff1f;&#x1f50d;1.1 提升响应的相关性和准确性1.2 节省时间与资源1.3 增强用户体验 了解ChatGPT的工作原理&#x1f9e0;2.1 语言模型的训练过程2.2 上下文理解与生成2.3 限制与挑战 高价值提示词的核心要素✍️3.1 清晰明确的指…

07架构面试题

目录 一、关于合生元的面试题的架构分析的问题 1. 陈述两种方案的优劣 2. 在那些条件下&#xff0c;会选择哪一个方案 3. 你倾向那一种&#xff1f; 4. 如果要实施方案二的&#xff0c;准备步骤和流程 一、关于合生元的面试题的架构分析的问题 1. 陈述两种方案的优劣 方案…

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

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

关于win11电脑连接wifi的同时,开启热点供其它设备连接

背景&#xff1a; 我想要捕获手机流量&#xff0c;需要让手机连接上电脑的热点。那么问题来了&#xff0c;我是笔记本电脑&#xff0c;只能连接wifi上网&#xff0c;此时我的笔记本电脑还能开启热点供手机连接吗&#xff1f;可以。 上述内容&#xff0c;涉及到3台设备&#x…

Linux编辑器 - vim

目录 一、vim 的基本概念 1. 正常/普通/命令模式(Normal mode) 2. 插入模式(Insert mode) 3. 末行模式(last line mode) 二、vim 的基本操作 三、vim 正常模式命令集 1. 插入模式 2. 移动光标 3. 删除文字 4. 复制 5. 替换 6. 撤销上一次操作 7. 更改 8. 调至指定…

靓车汽车销售网站(源码+数据库+报告)

基于SpringBoot靓车汽车销售网站&#xff0c;系统包含两种角色&#xff1a;管理员、用户,系统分为前台和后台两大模块&#xff0c;主要功能如下。 前台功能简介&#xff1a; - 首页&#xff1a;展示网站的概要信息和推荐车辆。 - 车辆展示&#xff1a;展示可供销售的汽车。 - …

数据集-目标检测系列- 花卉 鸡蛋花 检测数据集 frangipani >> DataBall

数据集-目标检测系列- 花卉 鸡蛋花 检测数据集 frangipani >> DataBall DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 贵在坚持&#xff01; 数据样例项目地址&#xff1a; * 相关项目 1&#xff09;数据集…

数据库基础(MySQL)

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

stm32cubemx+VSCODE+GCC+makefile 开发环境搭建

title: stm32cubemxVSCODEGCCmakefile 开发环境搭建 tags: FreertosHalstm32cubeMx 文章目录 内容往期内容导航第一步准备环境vscode 插件插件配置点灯 内容 往期内容导航 第一步准备环境 STM32CubeMXVSCODEMinGWOpenOcdarm-none-eabi-gcc 然后把上面下载的软件 3 4 5 bin 文…