在Flink Mapstate中删除TTL过期密钥

Eli*_*ran 2 apache-flink

我需要能够从地图状态中删除比固定时间还旧的旧键。我目前将每个事件的时间戳记保存在键状态图中,并且我希望有一个异步过程来删除这些陈旧的键。

我使用RocksDB作为国家后台,我不认为RocksDB的Java API的支持与TTL开放作为注意到这里

所以我的问题是:

  • 因为它在操作符函数中运行,所以根本不可能有一个访问Mapstate的异步线程吗?
  • 在这种情况下有更好的做法吗?

提前致谢,

Dav*_*son 5

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