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

cngwdvgl  于 2021-06-25  发布在  Flink
关注(0)|答案(1)|浏览(362)

我在用Flink v.1.4.0 . 我用的是 QueryableStateStream 我以某种方式键入 sink 创建一个 Queryable State ,例如:

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

只要我的孩子 Flink 作业正在运行。一旦这项工作被终止,州政府就再也无法进入了。
我有两个问题:
如何保持可查询状态?这可以像检查点一样定期完成吗?我应该改用托管状态解决方案吗?
如何初始化 QueryableState 从上一次执行中保留数据?
我希望这两个问题都有实际的例子。谢谢。

xt0899hw

xt0899hw1#

可查询状态是托管状态,它将被检查点和还原。当然,当应用程序没有运行时,flink状态确实是不可访问的。
你可以把redis或者cassandra或者任何你喜欢的数据库作为你工作的一个接收器(或者一个压缩的kafka主题)。这将使数据在flink作业未运行时可用。但值得考虑的是,保持数据库(或Kafka)运行是否比保持flink工作更容易。
无需从外部数据库重新初始化状态,因为flink将从检查点或保存点还原其状态。但如果需要的话,可以在richfunction的open()方法中实现。

相关问题