【问题标题】:How to persist a Queryable State in Flink?如何在 Flink 中持久化可查询状态?
【发布时间】:2018-01-24 11:35:16
【问题描述】:

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

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

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

我有两个问题:

  1. 如何保持可查询状态?这可以像检查点一样定期完成吗?我应该改用Managed State 解决方案吗?
  2. 如何使用上一次执行的持久化数据初始化 QueryableState

我会很感激这两个问题的实际例子。谢谢。

【问题讨论】:

    标签: persistence apache-flink flink-streaming checkpointing


    【解决方案1】:

    可查询状态是托管状态,它将被检查点和恢复。当然,当您的应用程序未运行时,确实无法访问 Flink 状态。

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

    无需从外部数据库重新初始化状态,因为 Flink 将从检查点或保存点恢复其状态。但如果需要,您可以在 RichFunction 的 open() 方法中执行此操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      • 2021-05-20
      • 1970-01-01
      相关资源
      最近更新 更多