删除 Flink 映射状态中的 TTL 过期密钥



我需要能够从映射状态中删除早于固定时间的旧键。 我目前将每个事件的时间戳保留在密钥状态图中,并且我希望有一个异步过程来删除这些过时的密钥。

我使用 RocksDB 作为状态后端,我不认为 RocksDB 的 Java API 支持此处所述的 TTL 开放。

所以我的问题是:

  • 是否有可能拥有一个可以访问 Mapstate 的异步线程,因为它在运算符函数中运行?
  • 在这种情况下有更好的做法吗?

提前感谢,

在 Flink 中过期状态的一种简单方法是使用ProcessFunction运算符来保存状态。然后,可以使用计时器(处理时间计时器或事件计时器,具体取决于对应用程序有意义的内容(并清除onTimer方法中的状态。

作为 Flink 1.6.0 版本,状态 TTL 功能已经实现。它允许为状态后端中的记录显式定义 TTL。问题是,当读取密钥时,删除密钥会延迟发生。如果未访问密钥,它将保留在那里。该限制很可能在将来的版本中删除。

状态生存时间 (TTL( Flink 文档

Apache Flink 的状态 TTL:如何限制状态的生存期

相关内容

  • 没有找到相关文章

最新更新