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