开发者社区 问答 正文

Flink sql 状态过期后,checkpoint 大小没变化

大家好: 版本:1.12.0 方式:flink sql 测试sql: select a.id,b.money,b.createTime from test_state_from a full join test_state_from1 b on a.id=b.id; 问题: test_state_from和test_state_from1 分别插入50万条数据,查看 checkpoint 大小为83m,state ttl 设 置为16分钟,30分钟后查看checkpoint的值还是83m,状态过期清理后的checkpoint为什么没变小?*来自志愿者整理的flink邮件归档

展开
收起
毛毛虫雨 2021-12-08 11:48:49 1437 分享 版权
1 条回答
写回答
取消 提交回答
  • 对的是我!

    你本地的数据肯定是过期了,checkpoint size没有变化是因为你的数据总量83MB,且之后没有插入新数据,导致没有触发RocksDB的compaction,所以本地的数据没有物理上清理,而在full snapshot时候,估计你并没有开启cleanFullSnapshot [1],所以导致full snapshot时候并没有删除掉过期数据。

    其实你可以查询一下状态,默认情况下,已经过期的数据是无法再查询到了。

    建议开启增量checkpoint即可,过期数据即使物理不删除,也因为过期而无法再读取到了,没必要过分关注UI上的checkpoint size。

    [1] https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/state/state.html#cleanup-in-full-snapshot*来自志愿者整理的flink邮件归档

    2021-12-08 17:09:01
    赞同 展开评论