Flink:把状态State全都扒光,远走他乡:State初始,广播状态

Flink教程(13) Keyed State状态管理之ValueState的使用 温差报警 KeyedState状态之ValueState的使用 温差报警一、ValueState的方法二、实验案例1. 温度Bean2. 将字符串映射成SensorRecord对象3. ValueStateDescriptor描述器4. 程序主题5. KeyedProcessFunction处理数据流 一、ValueState的方法 ValueState的使用比较简单,方法如下图 用ValueStateDescriptor定义ValueState的描述器 value()方法获取值 update(T value)方法 阅读详情

Statechu初始:

State是指流计算过程中计算节点的中间计算结果或元数据属性,比如 在aggregation过程中要在state中记录中间聚合结果,比如 Apache Kafka 作为数据源时候,我们也要记录已经读取记录的offset,这些State数据在计算过程中会进行持久化(插入或更新)。所以Apache Flink中的State就是与时间相关的,Apache Flink任务的内部数据(计算数据和元数据属性)的快照。

Flink:把状态State全都扒光,远走他乡:State初始,广播状态

 

State分类:Keyed State和Operator State

Keyed State

Keyed State是一种基于key的,它永远和key绑定,key和key之间的state没有关系,不会相互影响

Operator State

Operator State是一种基于Operate的,每个操作有状态的,每个操作之间不会相互影响。举例来说,Flink中的Kafka Connector,就使用了operator state。它会在每个connector实例中,保存该实例中消费topic的所有(partition, offset)映射。

Raw State和Managed State

  • Raw即原始状态:由用户自行管理状态具体的数据结构,框架在做checkpoint的时候,使用byte[]来读写状态内容,对其内部数据结构一无所知。
  • Managed State:即托管状态,托管状态是由Flink框架管理的状态,如ValueState, ListState, MapState等。

Keyed State ---- Managed State

  • ValueState:这将保留一个可以更新和检索的值(如上所述,作用域为输入元素的键,因此该操作看到的每个键可能会有一个值)。该值可以使用设置update(T)和使用检索 T value()。
    实例:
package flinkscala.State.Keyed_State

import org.apache.flink.api.common.functions.RichFlatMapFunction
import org.apache.flink.api.common.state.{ValueState, ValueStateDescriptor}
import org.apache.flink.api.common.typeinfo.TypeInformation
import org.apache.flink.configuration.Configuration
import org.apache.flink.streaming.api.scala._
import org.apache.flink.util.Collector

object valueStateTest {
  def main(args: Array[String]): Unit = {
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    env.setParallelism(1)
    env.fromCollection(List(
      (1L, 3L),
      (1L, 5L),
      (1L, 7L),
      (1L, 4L),
      (1L, 2L),
      (1L, 6L),
      (1L, 2L),
      (1L, 9L),
      (1L, 2L),
      (1L, 3L)
    )).keyBy(_._1)
      .flatMap(new CountWindowAverage())
      .print()
    env.execute("average Test")
  }
}

class CountWindowAverage extends RichFlatMapFunction[(Long,Long),(Long,Long)]{

  //定义一个ValueState,保存着(元素的个数,元素的和)
  private var sum: ValueState[(Long,Long)] = _

  override def flatMap(value: (Long, Long), out: Collector[(Long, Long)]): Unit = {
    //先访问ValueState,取出ValueState中的和
    //当然,如果是空的话,也就是初次使用的话,就初始化为0,0
    var tmpCurrentSum = sum.value()
    val surrentSum = if(tmpCurrentSum !=null){
      tmpCurrentSum
    }else {(0L,0L)}


    /*
    * 元素个数+1,元素和+当前进来的元素
    *
    */
    val newSum = (surrentSum._1+1,surrentSum._2+value._2)

    //更新状态State
    sum.update(newSum)

    //如果达到了两个元素,就计算一次平均值
    if(newSum._1>=2){
      out.collect((value._1,newSum._2/newSum._1))
      sum.clear()//清空状态
    }
  }

  override def open(parameters: Configuration): Unit ={
    sum = getRuntimeContext
        .getState(
          new ValueStateDescriptor[(Long, Long)]("average",createTypeInformation[(Long,Long)])
        )
  }
}

Flink:把状态State全都扒光,远走他乡:State初始,广播状态

 

ListState:这保留了元素列表。您可以追加元素并检索Iterable 所有当前存储的元素。使用add(T)或添加元素addAll(List),可以使用检索Iterable Iterable get()。您还可以使用以下方法覆盖现有列表update(List)

ReducingState:这将保留一个值,该值代表添加到状态的所有值的集合。介面与相似,ListState但使用新增的元素 add(T)会使用指定的简化为汇总ReduceFunct

Flink广播流、广播状态原理简析 Prologue 在很久之前的《Spark Streaming/Flink广播实现作业配置动态更新》一文中,笔者简单介绍了Flink Streaming API中广播流和广播状态的使用方法。前几天见到社区群内有童鞋询问与广播状态相关的事情,于是写一篇深入一点的文章说说它。 Broadcast[Connected]Stream 拿之前的示意图复习一下。其中Stream A是普通的数据流... 阅读详情

相关推荐

Flink Broadcast State 使用示例

什么是 Broadcast State Broadcast State 是 Flink 1.5 引入的新特性。在开发过程中,如果遇到需要下发/广播配置、规则等低吞吐事件流到下游所有 task 时,就可以使用 Broadcast State 特性。下游的 task 接收这些配置、规则并保存为 BroadcastState, 将这些配置应用到另一个数据流的计算中 。英语好的同学可以直接移步 Flink...

yuchuanchen的专栏 7742

flink 动态广播状态

flink 动态广播状态笔记 1.概要 往往我们在做flink任务计算的时候,需要动态的匹配规则,但是我们又不能每次修改都去重新部署服务,所以我们这里需要借助于flink的动态广播状态机制,来实时的处理我们的规则变化 2.样例 本实例,我们做的是增加动态规则判断,根据实时规则变化来判断是否需要做外部存储校验 代码: package com.kn.broadcast import org....

mapeng765441650的博客 3076

Flink的流广播(Broadcast State)

  上一篇Flink的状态管理中,我们提到了Operator state,本文介绍的广播状态(Broadcast State)是 Apache Flink 中支持的第三种类型的operator state。Broadcast State使得 Flink 用户能够以容错、一致、可扩缩容地将来自广播的低吞吐的事件流数据存储下来,被广播到某个 operator 的所有并发实例中,然后与另一条流数据连接进...

沧海笑007 5621

Flink state使用

讲解flink的state的分类以及如何使用

chanyue123的博客 3898

[Flink基础]--Apache Flink中的广播状态实用指南

感谢英文原文作者:https://data-artisans.com/blog/a-practical-guide-to-broadcast-state-in-apache-flink Apache Flink中的广播状态实用指南 从版本1.5.0开始,Apache FlinkⓇ具有一种新的状态,称为广播状态。在这篇文章中,我们解释了广播状态是什么,并展示了如何将其应用于评估事件流上的动态模式...

欢迎来到我的博客,一起探索代码里的世界! 5486

Flink Broadcast State 状态广播

Flink学习笔记(二十八):1.前言        在 Apache Flink 1.5.0 中引入了广播状态(Broadcast State)。广播状态模式指的一种流应用程序,其中低吞吐量的事件流(例如,包含一组规则数据/字典数据)被广播到某个 operator 的所有并发实例中,然后针对来自另一条原始数据流中的数据,进行关联操作。 2.Broadcas...

扛麻袋的少年的博客 2178

flink-note笔记:flink-state模块中broadcast state(广播状态)解析

flink广播状态

cobracanary的博客 1412

数据结构实验1.2—高精度计算PI值(西工大)

这是数据结构第二题的题目,是让我们根据用户的需求来计算派的值 这是题目的详细描述,刚看到这道题的时候,我是真的头大,完全没有思路,于是查找了一些大佬的笔记后才开始编写 这是我在写这些代码是所运用到的数学反三角函数幂次展开式的知识。 下面是正确的代码以及我的一些见解,和需要注意的一些地方。希望能对你有所帮助。如有更加精简的算法,请在评论区留下你的算法!!!谢谢!!! #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdl

abcdef0623的博客 5831

INCA文件刷写全流程:从ES581驱动安装到XCP协议实战(附避坑指南)

本文详细解析INCA文件刷写的全流程操作,从ES581驱动安装到XCP协议配置,提供实战经验与避坑指南。涵盖A2L文件校验、工作区优化、XCP参数调优及自动化刷写技巧,帮助工程师高效完成ECU开发中的文件刷写任务。

egg99的博客 944

保姆级教程:用Seurat 5.0.1搞定单细胞测序数据从质控到细胞注释的全流程

本文提供了一份详细的Seurat 5.0.1单细胞测序数据分析教程,涵盖从数据质控到细胞注释的全流程。通过R代码示例和可视化分析,帮助用户掌握单细胞RNA测序数据处理的核心技术,包括数据标准化、降维聚类和细胞类型注释,适用于生物信息学研究和临床数据分析。

weixin_29067143的博客 200

不用写触发器!帆软填报报表自动记录创建/修改时间的终极方案

本文详细介绍了帆软填报报表中无需编写数据库触发器,即可自动记录数据创建时间和修改时间的终极方案。该方案利用帆软内置函数和单元格条件属性,在应用层实现日期自动生成,有效规避了触发器带来的权限、维护和部署难题,为数据填报提供了更轻量、灵活且易于维护的解决方案。

weixin_28040125的博客 365

用友U8自定义按钮开发:从基础配置到实战业务集成

本文详细介绍了用友U8自定义按钮开发的完整流程,从基础配置到实战业务集成。通过实际案例演示如何在U8系统中添加和替换功能按钮,包括数据库配置、SQL脚本编写和VB组件开发等关键技术点,帮助企业用户实现业务场景的深度定制。

weixin_29698641的博客 257

腾讯大佬总结的170道 python面试题

简述基于 TCP 协议的套接字通信流程。19.面向对象中`__new__` 和 `__init__` 区别。86. 解释 Python 中的`//`,`%`和`**`运算符。45.isinstance 的作用以及与 type()的区别。3. 简述下 Python 中的字符串、列表、元组和字典。143. 如何高效的找到 redis 中的某个 KEY。140. 如何保证 redis 中的数据都是热点数据。147. redis 中的 watch 的命令的作用。108. 简述 进程、线程、协程的区别以及应用场景。

AudiA6LV6的博客 491

基于 Vivado HLS 的 AC97 音频系统设计

介绍一种基于 FPGA 的 AC97 音频系统设计。系统的核心部件采用 Xilinx Atlys 的板载 Spartan6 XCSLX45 芯片,使用的工具为 Xilinx 的高层 次 综 合 技 术 Vivado HLS。首先使用 C /C + + 代码编写的算法描述系统的 FIR 滤波器; 然后按 照 Vivado HLS 编译工具的规范,将程序代码转换为 RTL 模型,快速、直接地生成对 应左右声道的 FIR IP 核和综合结果; 再结合互连的 MicroBlaze 处理器 IP 核,处理 一段立体声

qq_43416206的博客 328

AUTOSAR进阶图解==>AUTOSAR_EXP_CDDDesignAndIntegrationGuideline

本文档提供了AUTOSAR架构中复杂驱动(CDD)的设计与集成指南。CDD作为非标准化的软件实体,位于复杂驱动层,实现传感器评估、执行器控制、微控制器访问等特殊功能。文档详细阐述了CDD的架构特点、设计建议(包括文档要求、文件结构、接口描述等)以及与其他模块(RTE、库、标准BSW等)的集成方式。特别强调了CDD在多核系统和MCAL层中的实现考量,为开发人员提供了从文档规范到代码实现的全方位指导,确保CDD在保持AUTOSAR兼容性的同时满足特殊功能需求。

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 1890

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

上一篇: 过了这么久,我终于看懂了HBase,太不容易了QAQ
下一篇: Flink中的一些核心概念,深度剖析新一代Flink计算引擎
爱玛士
博客等级 码龄7年 720粉丝 253原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值