当前位置: 首页 > news >正文

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存储,持久化到磁盘,数据存储需要序列化)

http://www.lryc.cn/news/374919.html

相关文章:

  • OpenCV图像算术位运算
  • 【调试笔记-20240611-Linux-配置 OpenWrt-23.05 支持泛域名 acme 更新】
  • ssm宠物网站系统-计算机毕业设计源码07183
  • 想上币的项目方怎么去选择交易所
  • mysql如何创建并执行事件?
  • k8s环境里查看containerd创建的容器对应的netns
  • 学习笔记——网络管理与运维——SNMP(基本配置)
  • CMake从安装到精通
  • 【C++】认识STL
  • 力扣 50.pow(x,n)
  • R可视化:微生物相对丰度或富集热图可视化
  • Unity Maximum Allowed Timestep的说明
  • 长短期记忆神经网络(LSTM)的回归预测(免费完整源代码)【MATLAB】
  • 关于 python request 的 response 返回 b‘\xa3\xff\xff\x11E .....‘ 类型的数据的解决方案
  • 后端高频面试题分享-用Java判断一个列表是否是另一个列表的顺序子集
  • 【数据初步变现】论自助BI在数字化转型中如何赋能业务
  • Python 学习 第二册 第14章 网络编程
  • 微信 小程序应用,页面,组件的生命周期
  • 代码随想录算法训练营Day41|背包问题、分割等和子集
  • oracle SCHEDULER
  • 实现虚拟机的难点
  • JAVA-线程
  • 代码随想录——电话号码的字母组合(Leetcode17)
  • 多款可观测产品全面升级丨阿里云云原生 5 月产品月报
  • python实践笔记(三): 异常处理和文件操作
  • Excel VLOOKUP 使用记录
  • Spring Cloud Stream 消息驱动基础入门与实践总结
  • 你好rust
  • STM32 printf 重定向到CAN
  • jmeter性能优化之mysql监控sql慢查询语句分析