我需要能够从地图状态中移除旧密钥,这些密钥早于固定的时间量。 我目前在关键状态映射中保存每个事件的时间戳,并且我希望有一个同步过程,它将删除这些陈旧的密钥。
我正在使用RocksDB作为状态后端,我不认为RocksDB的Java API支持使用TTL打开here。
所以我的问题是:
提前致谢,
答案 0 :(得分:3)
在Flink中使状态到期的一种直接方法是使用ProcessFunction
运算符来保持状态。然后,您可以使用计时器(处理时间计时器或事件时间计时器,具体取决于对您的应用程序有意义的计时器)并使用onTimer
方法清除状态。
答案 1 :(得分:0)
从Flink 1.6.0版本开始,已实现状态TTL功能。它允许为状态后端中的记录显式定义TTL。问题是,在读取密钥时,密钥的删除很懒。如果没有访问密钥,它将保留在那里。该限制很可能在将来的版本中删除。
State Time-To-Live (TTL) Flink Documentation
State TTL for Apache Flink: How to Limit the Lifetime of State