首页 文章

如何在Flink中保持可查询状态?

提问于
浏览
0

我正在使用FLink v.1.4.0 . 我正在使用 QueryableStateStream ,我以某种方式键入,然后 sink 它创建 Queryable State ,例如:

stream.keyBy(0).asQueryableState("query-name");

只要我的 Flink 工作正在运行,这一切都很好 . 一旦工作被杀,国家就不再可以进入 .

我有两个问题:

  • 如何保持可查询状态?这可以定期进行,如检查点?我应该使用Managed State解决方案吗?

  • 如何使用先前执行中保留的数据初始化 QueryableState

我很欣赏这两个问题的实际例子 . 谢谢 .

1 回答

  • 1

    可查询状态是受管状态,将进行检查点和恢复 . 当然,在您的应用程序未运行时,无法访问Flink状态 .

    你可以附加一些像redis或cassandra或者你喜欢的任何数据库作为你工作的接收器(或者压缩的Kafka主题) . 这将使您的Flink作业未运行时可用数据 . 但值得考虑的是,保持数据库(或Kafka)运行比保持flink工作更容易 .

    无需从外部数据库重新初始化状态,因为Flink将从检查点或保存点恢复其状态 . 但是如果需要的话,你可以在RichFunction的open()方法中做到这一点 .

相关问题