清理过期数据可以释放存储空间,优化资源利用并提升系统运行效率等。本文为您介绍如何清理Paimon表过期数据,包括调整快照文件过期时间、设置分区的过期时间、以及清理废弃文件。
注意事项
仅实时计算引擎VVR 8.0.5及以上版本支持Paimon表。
调整快照文件过期时间
为了保证快照能准确地还原历史状态,快照文件存在期间,其关联的历史数据文件不得删除。
随着快照文件不断产生,历史数据占用的存储空间也将逐渐增加。因此,我们需要清理不再使用的快照文件,以释放该快照文件指向的历史数据文件,从而释放存储空间。
以下参数决定了快照文件的过期时间。您可以通过ALTER TABLE语句修改这些参数,也可以在写入作业中通过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
,就会触发快照清理。
设置分区过期时间
如果您的业务只关心最近一段时间内的数据,您可以按时间对数据进行分区,并设置分区过期时间以自动删除过于久远的历史分区,从而释放存储空间。
只有包含分区过期事件的快照文件也过期了,分区中的数据文件才会被真正删除。
分区过期行为由下表三个表参数共同决定。您可以通过ALTER TABLE语句修改这些参数,也可以在写入作业中通过SQL Hints临时修改这些参数,详情请参见修改表结构。
参数 | 说明 | 备注 |
| 分区的过期时间。 | 参数值为时间长度,例如 |
| 将分区值转换为时间字符串的格式串。 | 在该格式串中,分区列由美元符号($)加上列名表示。 |
| 将时间字符串转换为时间戳的格式串。 |
|
当分区的存活时长超过分区的过期时间参数值时,该分区将被删除。分区的存活时长等于当前系统时间减去分区值转化后的时间戳。分区值转化成时间戳的逻辑如下:
通过
partition.timestamp-pattern
参数指定的格式串,将一个分区值转换为时间字符串。通过
partition.timestamp-formatter
参数指定的格式串,将时间字符串转换为时间戳。
例如:
假设分区列由
dt
一列组成,可以设置'partition.timestamp-pattern' = '$dt'
将分区dt=20240308
转化为字符串20240308
,设置'partition.timestamp-formatter' = 'yyyyMMdd'
将该字符串转换为时间戳。假设分区列由
year
、month
和day
三列组成,可以设置'partition.timestamp-pattern' = '$year-$month-$day'
,将分区year=2023,month=04,day=21
转化为字符串2023-04-21
。此时不需要设置partition.timestamp-formatter
,因为该字符串符合默认格式之一的yyyy-MM-dd
。假设分区列由
year
、month
、day
和hour
四列组成,可以设置'partition.timestamp-pattern' = '$year-$month-$day $hour:00:00'
,将分区year=2023,month=04,day=21,hour=17
转换为字符串2023-04-21 17:00:00
。此时不需要设置partition.timestamp-formatter
,因为该字符串符合默认格式之一的yyyy-MM-dd HH:mm:ss
。
清理废弃文件
由于作业报错重启等原因,Paimon表目录下可能会遗留一些未被提交的临时文件。这些废弃文件无法通过快照过期删除,需要手动执行以下步骤进行清理。清理的操作步骤如下:
在文本编辑区域,输入以下SQL语句。
CALL `<catalog-name>`.sys.remove_orphan_files('<database-name>.<table-name>');
其中,
<catalog-name>
是Paimon Catalog的名称,<database-name>
是需要清理的 Paimon表所在的Database的名称,<table-name>
是需要清理的Paimon表的名称。默认情况下,清理废弃文件只清理创建时间超过1天的废弃文件。您可以额外传入时间参数,指定最晚创建时间。例如,下面代码示例展示了清理mycat.mydb.mytbl表中,创建时间不晚于2023-10-31 12:00:00的废弃文件。
CALL `mycat`.sys.remove_orphan_files('mydb.mytbl', '2023-10-31 12:00:00');
选中SQL代码后,单击左侧代码行数上的运行。
清理完成后,下方的结果选项卡会显示删除文件的总数。
相关文档
如果您需要了解Paimon主键表的常用优化,详情请请见Paimon性能优化。
Paimon表的消费依赖快照文件,快照过期时间太短或消费作业效率低会导致正在消费的快照文件因过期被删除,消费作业出现
File xxx not found, Possible causes
报错,解决方法请参见读Paimon作业出现File xxx not found, Possible causes。