如何在 Flink 中持久化可查询状态



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

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

只要我的Flink工作还在运行,这一切都很好。一旦工作被终止,状态就无法再访问。

我有两个问题:

  1. 如何保持可查询状态?这可以像检查点一样定期完成吗?是否应改用托管状态解决方案?
  2. 如何使用从先前执行中保留的数据初始化QueryableState

我希望这两个问题都有实际的例子。谢谢。

可查询状态是托管状态,它将被检查点并还原。当然,确实,当你的应用程序不运行时,Flink 状态是无法访问的。

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

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

相关内容

  • 没有找到相关文章

最新更新