清理 ProcessWindowFunction 的窗口状态,无需 TTL 并使用 RocksDB 作为后端



Flink提供管理状态的TTL配置,使用RocksDB作为后端时,它在自定义压缩过滤器中执行清理(如果我理解正确的话)。然而,在ProcessWindowFunction的键控窗口状态下,我们期望重写clear方法并显式调用

之类的东西
context.windowState().*.clear()

如果状态描述符没有配置TTL,在clear回调后是否仍然发生清理?如果不是,这种类型的状态的清理仅取决于RocksDB的级别大小,默认设置是什么,是否可配置?

如果状态描述符没有配置TTL,清除回调后是否仍然发生?

是的,除非状态描述符被用来创建存储在KeyedStateStore ProcessWindowFunction.Context#globalState中的状态。此全局状态是清除窗口后保留的唯一状态。如果您有一个不断增长的密钥空间,您应该为您使用的任何globalState配置状态TTL,否则将永远不会清理过时密钥的globalState

顺便说一句,这与rocksdb无关。对于任何状态后端,答案都是一样的。

相关内容

  • 没有找到相关文章

最新更新