Flink的算子列表状态的使用
背景
算子的列表状态是平时比较常见的一种状态,本文通过官方的例子来看一下怎么使用算子列表状态
算子列表状态
算子列表状态支持应用的并行度扩缩容,如下所示:

使用方法参见官方示例,我加了几个注解:
public class BufferingSinkimplements SinkFunction<Tuple2<String, Integer>>,CheckpointedFunction {//要实现CheckpointedFunction接口private final int threshold;//算子操作状态对象--算子级别的private transient ListState<Tuple2<String, Integer>> checkpointedState;//本地变量,保存这个算子任务的本地变量--任务级别的 private List<Tuple2<String, Integer>> bufferedElements;public BufferingSink(int threshold) {this.threshold = threshold;this.bufferedElements = new ArrayList<>();}//invoke方法中一般都是操作本地变量bufferedElements,不会直接操作算子列表状态@Overridepublic void invoke(Tuple2<String, Integer> value, Context contex) throws Exception {bufferedElements.add(value);if (bufferedElements.size() >= threshold) {for (Tuple2<String, Integer> element: bufferedElements) {// send it to the sink}bufferedElements.clear();}}@Overridepublic void snapshotState(FunctionSnapshotContext context) throws Exception {checkpointedState.clear();for (Tuple2<String, Integer> element : bufferedElements) {// 把本地变量的值设置到算子列表状态中,算子列表状态会自动会被持久化checkpointedState.add(element);}}@Overridepublic void initializeState(FunctionInitializationContext context) throws Exception {ListStateDescriptor<Tuple2<String, Integer>> descriptor =new ListStateDescriptor<>("buffered-elements",TypeInformation.of(new TypeHint<Tuple2<String, Integer>>() {}));// 定义算子列表状态checkpointedState = context.getOperatorStateStore().getListState(descriptor);if (context.isRestored()) {// 算子列表状态的值设置到本地变量中for (Tuple2<String, Integer> element : checkpointedState.get()) {bufferedElements.add(element);}}}
}
相关文章:
Flink的算子列表状态的使用
背景 算子的列表状态是平时比较常见的一种状态,本文通过官方的例子来看一下怎么使用算子列表状态 算子列表状态 算子列表状态支持应用的并行度扩缩容,如下所示: 使用方法参见官方示例,我加了几个注解: public class Bufferin…...
使用 Github Actions 工作流自动部署 Github Pages
GitHub-Actions actions顾名思义就是一堆动作,是一个持续集成服务,持续集成包含了拉代码、运行测试、编译代码、登录远程服务器,发布到第三方服务等等的操作,GitHub将这些操作称为actions。 概念:Workflows, Events,…...
Xposed hook 抖音账户信息
本篇主要讲下hook获取 抖音账户的相关信息,直接上代码。 public class DouHook {private static final String TAG "DouHook";public static void hook(XC_LoadPackage.LoadPackageParam lpparam) {Log.e(TAG, "DouHook start");if (lpparam …...
回顾 | E³CI效能认知与改进论坛,助力企业研发效能度量和提升
2023年8月,TiD质量竞争力大会组委会和ECI专家委员会成功举办TiD大时段课程“度量驱动研发效能提升”与“ECI效能认知与改进论坛”。与会专家以《ECI软件研发效能度量规范》团体标准为要点,为企业研发效能度量和提升分享诸多实践成果与经验。 《ECI软件研…...
科技的成就(五十二)
405、微信公众平台正式上线 "1995 年 8 月 24 日,微软发布 Windows 95。Windows 95 极大地改进了前续系统的图形用户界面,首次推出了开始菜单、任务栏、最大化、最小化窗口以及关闭按钮。此外,Windows 95 最大程度兼容当时的 MS-DOS 和 …...
【23种设计模式】装饰器模式
个人主页:金鳞踏雨 个人简介:大家好,我是金鳞,一个初出茅庐的Java小白 目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客&am…...
解决IDEA中SpringBoot项目创建多个子模块时配置文件小绿叶图标异常问题
在新建子模块下创建配置文件: 在子模块gateway中新建的配置文件,正常情况下配置文件左侧是小树叶标识,而这次新建application-dev.yml是个小树叶标识,bootstrap.yml是个方框。 看其他方案都是在project structure中设置,但未显示…...
【马蹄集】—— 概率论专题
概率论专题 目录 MT2226 抽奖概率MT2227 饿饿!饭饭!MT2228 甜甜花的研究MT2229 赌石MT2230 square MT2226 抽奖概率 难度:黄金 时间限制:1秒 占用内存:128M 题目描述 小码哥正在进行抽奖,箱子里有…...
Spring 6整合单元测试JUnit4和JUnit5
单元测试:JUnit 在之前的测试方法中,几乎都能看到以下的两行代码: ApplicationContext context new ClassPathXmlApplicationContext("xxx.xml"); Xxxx xxx context.getBean(Xxxx.class);这两行代码的作用是创建Spring容器&…...
【好书推荐】深入理解现代JavaScript
作者介绍 T. J. Crowder是一位拥有30年经验的软件工程师。在他的整个职业生涯中,他至少有一半时间是在使用JavaScript从事开发工作。他经营着软件承包和产品公司Farsight Software。他经常在Stack Overflow上为人们提供帮助,他是十大贡献者之一和JavaScr…...
高效协同: 打造分布式系统的三种模式
在构建分布式系统时,分布式协调是否总是必要选项?本文通过一些实际的例子讨论了这一问题,并通过把问题区分为是否具有单调性做为是否需要分布式协调的标准。原文: Avoiding Coordination Cost: Three Patterns for Building Efficient Distri…...
机器学习-无监督学习之聚类
文章目录 K均值聚类密度聚类(DBSCAN)层次聚类AGNES 算法DIANA算法 高斯混合模型聚类聚类效果的衡量指标小结 K均值聚类 步骤: Step1:随机选取样本作为初始均值向量。 Step2:计算样本点到各均值向量的距离,…...
智能垃圾桶丨悦享便捷生活
垃圾桶是人们日常生活所必不可少的必需品,它让生活中所产生的垃圾有了一个正确的存放地方。随着生产技术的迅速发展,垃圾桶也得以更新换代。由最初的简单式的圆筒式垃圾桶,到现在出现的感应式垃圾桶、智能语音控制垃圾桶,垃圾桶也…...
【数据结构】线性表(一)线性表的定义及其基本操作(顺序表插入、删除、查找、修改)
目录 一、线性表 1. 线性表的定义 2. 线性表的要素 二、线性表的基本操作 三、线性表的顺序存储结构 1. 定义 2. 顺序表的操作 a. 插入操作 b. 删除操作 c. 查找操作 d. 修改操作 e. 代码实例 一、线性表 1. 线性表的定义 一个线性表是由零个或多个具有相同…...
MyBatis的自定义插件
MyBatis的自定义插件 前置知识 MyBatis 可以拦截的四大组件 Executor - 执行器StatementHandler - SQL 语句构造器ParameterHandler - 参数处理器ResultSetHandler - 结果集处理器 自定义 MyBatis 插件 /*** 打印 sql 执行的时间插件*/ Intercepts(// 指定拦截器拦截的对象…...
生物制剂\化工\化妆品等质检损耗、制造误差处理作业流程图(ODOO15/16)
生物制剂、化工、化妆品等行业,因为产品为液体,产品形态和质量容易在各个业务环节发生变化,常常导致实物和账面数据不一致,如果企业业务流程不清晰,会导致系统大量的库存差异,以及财务难以核算的问题&#…...
vbv介绍
VBV模型 VBV即Video Buffer Verifier(视频缓冲区校验器)。 本质是encoder端的一个虚拟buffer,可以将VBV当做一个容量受限的管道,有一个上限容量值和下限容量值,在经过此管道的调节之后能限制编码码率在上限容量值和下限容量值之间。VBV对标NetEq中的那几个buffer(decoder b…...
Linux CentOS 8(网卡的配置与管理)
Linux CentOS 8(网卡的配置与管理) 目录 一、项目介绍二、命令行三、配置文件四、图形画界面的网卡IP配置4.1 方法一4.2 方法二 一、项目介绍 Linux服务器的网络配置是Linux系统管理的底层建筑,没有网络配置,服务器之间就不能相互…...
python -m pip install 和 pip install 的区别解析
python -m pip install 和 pip install 的区别解析 python -m pip install 使用了 -m 参数来确保以 Python 模块的形式运行 pip,适用于确保在不同的环境中正确使用 pip,这篇文章主要介绍了python -m pip install 和 pip install 的区别,需要的朋友可以参…...
深度解读js中数组的findIndex方法
js中数组有一个findIndex方法,这个方法是一个让人感到很困惑的方法。 首先来看看MDN对这个方法的解释:Array.prototype.findIndex() - JavaScript | MDN The findIndex() method of Array instances returns the index of the first element in an arra…...
学Simulink——基于Simulink的基于扰动观测器(DOB)的负载扰动补偿
目录 手把手教你学Simulink——基于Simulink的基于扰动观测器(DOB)的负载扰动补偿 摘要 一、背景与挑战 1.1 负载扰动补偿的痛点与传统控制局限 1.1.1 应用场景与核心指标 1.1.2 传统PI控制的缺陷 1.2 DOB负载扰动补偿的核心优势 1.3 设计目标 二、系…...
OpenClaw新手避坑指南:Phi-3-vision-128k-instruct部署中的5个常见错误
OpenClaw新手避坑指南:Phi-3-vision-128k-instruct部署中的5个常见错误 1. 镜像版本不匹配导致的初始化失败 上周我在本地尝试部署Phi-3-vision-128k-instruct时,遇到了第一个拦路虎——系统提示"CUDA version mismatch"。这个错误看似简单&…...
打造个人离线书库:番茄小说下载器全场景应用指南
打造个人离线书库:番茄小说下载器全场景应用指南 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 番茄小说下载器是一款开源工具,专为小说爱好者设计&am…...
OBS Studio高级玩家指南:用这5个隐藏功能让你的直播画质翻倍
OBS Studio高级玩家指南:用这5个隐藏功能让你的直播画质翻倍 如果你已经熟悉OBS Studio的基础操作,却总感觉直播画质离专业级差一口气,这篇文章将带你解锁那些被90%用户忽略的核弹级功能。从多轨道音频的精细控制到动态比特率的智能适配&…...
无人驾驶车辆轨迹跟踪MPC、LQR、PP算法对比仿真(带说明文档)
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...
5分钟掌握gdrivedl:突破Google Drive下载限制的高效工具
5分钟掌握gdrivedl:突破Google Drive下载限制的高效工具 【免费下载链接】gdrivedl Google Drive Download Python Script 项目地址: https://gitcode.com/gh_mirrors/gd/gdrivedl 解决云存储下载痛点:为什么你需要这款工具? 作为经常…...
阅读APP书源完全指南:3种快速导入方法与问题解决方案
阅读APP书源完全指南:3种快速导入方法与问题解决方案 【免费下载链接】Yuedu 📚「阅读」自用书源分享 项目地址: https://gitcode.com/gh_mirrors/yu/Yuedu 「阅读」APP书源开源项目为小说爱好者提供了一个强大的解决方案,让您能够在一…...
CodeSys自定义HTML5控件:从零构建到工程部署的实战指南
1. 为什么需要自定义HTML5控件? 在工业自动化领域,CodeSys作为主流的PLC编程环境,其WebVisu功能允许工程师创建可视化界面。但默认控件库往往无法满足特定需求,比如: 需要展示实时数据曲线图而非简单数值要求特殊交互…...
从ARXML文件反推软件架构:一个ComM模块的配置实例如何映射到你的C代码
从ARXML到C代码:ComM模块配置的逆向工程实战 当你第一次打开ComM_Cfg_SWCD.arxml文件时,那些层层嵌套的XML标签是否让你感到无从下手?作为AUTOSAR开发中最关键的配置文件之一,ARXML实际上是一张精确的"施工图纸"&#x…...
别再死记硬背了!用‘打电话’、‘寄快递’、‘发长信’来秒懂网络交换三兄弟
别再死记硬背了!用‘打电话’、‘寄快递’、‘发长信’来秒懂网络交换三兄弟 刚接触计算机网络时,那些晦涩的专业术语总让人望而生畏。记得我第一次看到"电路交换"、"分组交换"这些概念时,满脑子都是问号——直到有一天&…...
