如何清理Flink流状态为非活动密钥?

时间:2017-03-21 16:28:40

标签: apache-flink flink-streaming

我的目标是建立一个Flink流程序来保存最后的N ID,其中id是从事件中提取的。接收器是Cassandra存储器,因此可以随时获取id列表。重要的是Cassandra会在每次活动时立即更新。

这可以使用?轻松实现(请参阅下面的代码)。但是,此代码存在重要问题。状态由mapWithState键入。有些用户可能会活动一段时间,然后再也不会。我担心的是,状态存储将永远增长。

如何清除非活动密钥的状态?

userid

1 个答案:

答案 0 :(得分:6)

成长状态是一项重要且正确的观察。如果您的密钥空间正在移动,这肯定会发生。

Flink 1.2.0添加了解决此问题的ProcessFunctionProcessFunction类似于FlatMapFunction,但可以访问计时器服务。您可以注册在到期时调用onTimer()回调函数的计时器。回调可用于清理状态。