有状态的函数和算子在处理单个元素/事件时存储数据,使得状态state
成为任何精细操作的关键构件。
例如:
Flink
需要了解状态,以便使用检查点进行状态容错,并允许流应用程序使用保存点。
对状态进行了解有助于你对 Flink
应用程序进行扩展,这意味着 Flink
负责在并行实例之间进行重新分配状态。
Flink
的可查询状态queryable state
功能允许你在 Flink
运行时在外部访问状态。
在使用状态时,阅读有关Flink
的 State Backends
应该对你很有帮助。Flink
提供不同的 State Backends
,并指定状态的存储方式和位置。状态可以位于Java
的堆内或堆外。根据你的 State Backends
,Flink
也可以管理应用程序的状态,这意味着Flink
进行内存管理(可能会溢写到磁盘,如果有必要),以允许应用程序保持非常大的状态。State Backends
可以在不更改应用程序逻辑的情况下进行配置。
Flink
应用程序中使用状态,并解释不同类型的状态。Flink
运行时从外部访问状态。Managed State
自定义序列化:讨论为状态自定义序列化逻辑及其升级。原文:https://ci.apache.org/projects/flink/flink-docs-release-1.4/dev/stream/state/index.html