flink学习-状态管理

状态管理

在flink中,算子可以分为无状态和有状态两种情况。

无状态的算子只需要观察每个独立事件,根据当前输入的数据直接输出结果。像:filter、flatMap、map都属于无状态的算子。

有状态的算子则是除当前数据之外,还需要一些其他数据来计算结果。这里说的其他数据其实就是指状态,聚合算子,窗口算子都应该算是有状态的算子。

状态也可以分为两种,一种是算子状态,一种是按键分区状态(只有进行key 进行分组的)

按键分区状态

  1. 值状态
    值状态就是状态中只保存一个值
  2. 列表状态
    用List的形式存储状态,主要有的方法:get(获取列表状态,返回值迭代类型);update(更新list状态)、add(添加一个元素)、addAll(添加多个)、clear(清空)
  3. Map状态
    用map形式存储状态。
  4. 规约状态
  5. 聚合状态

状态生存时间

因为状态如果长时间保存会导致存储耗尽,通过设置状态的ttl,可以自动清除没有用的状态,当状态在内存中存在的时间超过这个值,就将它清除。

算子状态

在算子状态中,一个子任务就是一个整体

主要几种类型:列表状态、联合列表状态、广播状态

在算子状态中可以进行初始化后,进行持久化防止异常退出时丢失算子状态,

列表状态和联合列表状态区别在于:并行度改变后如何重新分配,list状态:轮询均分给新的并行子任务;unionlist状态:原先多个子任务的状态,合并成一份完成的,分配给每个新的算子一整份。

广播状态:可以作为配置流进行配置,可以实时修改配置。

状态后端

状态后端分类

HashMapStateBacked (哈希表状态后端,使用内存,保存在TaskManager JVM堆,默认使用)

EmbeddedRocksDBStateBackend(内嵌RocksDB状态后端,kv存储,持久化到磁盘,数据存储需要序列化)

相关推荐
神算大模型APi--天枢6461 分钟前
智能协同与垂直深耕:聚合模型API算力平台重构软件开发生态
大数据·人工智能·科技·重构·架构·gpu算力
Elastic 中国社区官方博客15 分钟前
使用 LangGraph.js 和 Elasticsearch 构建一个金融 AI 搜索工作流
大数据·人工智能·elasticsearch·搜索引擎·ai·金融·全文检索
●VON20 分钟前
从单端到“空地一体”:基于 HarmonyOS 的多端协同感知系统开发实践
学习·华为·harmonyos·openharmony·开源鸿蒙
Hello.Reader43 分钟前
在 Flink SQL 中玩转实时模型推理 —— ML_PREDICT 实战解析
sql·flink·linq
Mxsoft6191 小时前
Flink CEP预警连锁故障,提前30分钟救场!
大数据·flink
武子康1 小时前
大数据-176 Elasticsearch Filter DSL 全面实战:过滤查询、排序分页、高亮与批量操作
大数据·后端·elasticsearch
眼眸流转1 小时前
Godot学习笔记
笔记·学习·godot
圆弧YH1 小时前
键盘→语言操作
学习
geneculture1 小时前
融合全部讨论精华的融智学认知与实践总览图:掌握在复杂世界中锚定自我、有效行动、并参与塑造近未来的元能力
大数据·人工智能·数据挖掘·信息科学·融智学的重要应用·信智序位·全球软件定位系统
世界宇宙超级无敌究极特级顶级第一非常谱尼1 小时前
RF Power Amplifers for Wireless Communications 第一章学习笔记
笔记·学习·pa·功率放大器·mmic