我正在使用FLink v.1.4.0
. 我正在使用 QueryableStateStream
,我以某种方式键入,然后 sink
它创建 Queryable State
,例如:
stream.keyBy(0).asQueryableState("query-name");
只要我的 Flink
工作正在运行,这一切都很好 . 一旦工作被杀,国家就不再可以进入 .
我有两个问题:
-
如何保持可查询状态?这可以定期进行,如检查点?我应该使用Managed State解决方案吗?
-
如何使用先前执行中保留的数据初始化
QueryableState
?
我很欣赏这两个问题的实际例子 . 谢谢 .
1 回答
可查询状态是受管状态,将进行检查点和恢复 . 当然,在您的应用程序未运行时,无法访问Flink状态 .
你可以附加一些像redis或cassandra或者你喜欢的任何数据库作为你工作的接收器(或者压缩的Kafka主题) . 这将使您的Flink作业未运行时可用数据 . 但值得考虑的是,保持数据库(或Kafka)运行比保持flink工作更容易 .
无需从外部数据库重新初始化状态,因为Flink将从检查点或保存点恢复其状态 . 但是如果需要的话,你可以在RichFunction的open()方法中做到这一点 .