清理Paimon过期数据
操作场景
清理过期数据可以释放存储空间,优化资源利用并提升系统运行效率等。
调整快照文件过期时间
快照文件用于还原历史状态,在其存续期间,关联的历史数据文件无法删除。随着快照不断生成,存储占用会持续增长,通过清理不再使用的快照文件,可以释放其指向的历史数据文件所占用的空间。
表1中的参数决定了快照文件的过期时间。
| 参数 | 说明 | 数据类型 | 默认值 |
|---|---|---|---|
| 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”,就会触发快照清理。
手动清理临时文件
由于作业报错重启等原因,Paimon表目录下可能会遗留一些未被提交的临时文件。这些文件无法通过快照过期机制删除,需要手动清理。可通过执行如下SQL进行清理:
CALL my_catalog.sys.remove_orphan_files(table => '<my_db>.<my_table>');
其中,my_catalog是Paimon Catalog名称,my_db是需要清理的Paimon表所在的数据库名称,my_table是需要清理的Paimon表的表名称。默认情况下,该操作只清理创建时间超过1天的废弃文件。可以通过传入额外参数,指定清理截止时间,但需要确保指定时间之前启动的写入任务都已经结束;例如业务中写入任务最长运行2个小时,则清理截止时间需要指定为2个小时之前,否则可能误删正在运行而未提交任务产生的数据文件,导致数据丢失。例如,清理my_catalog.my_db.my_table表中创建时间不晚于2026-01-01 12:00:00的废弃文件:
CALL my_catalog.sys.remove_orphan_files(table => '<my_db>.<my_table>', older_than => '2026-01-01 12:00:00');