目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

大数据全系列 教程

1869个小节阅读:467.1k

收藏
全部开发者教程

408考研

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(203)
赞(0)

状态存储结构

状态数据可以维系在本地存储中,这里的存储可以是 Flink 的堆内存或者堆外内存,也可以借助第三方的存储介质,例如:Flink中已经实现的RocksDB,当然用户也可以自己实现相应的缓存系统去存储状态信息。那么它是以什么样的结构被存储的呢

状态计算其实就是需要考虑历史数据,而历史数据需要搞个地方存储起来。Flink为了方便不同分类的State的存储和管理,提供以下保存State的数据结构。

  • MapState<UK,UV>:即状态值为一个map

    • 维护了一个映射列表,可以添加键值对到状态中,也可以获得反映当前所有映射的迭代器。
    • 使用contains(UK key)判断特定key是否存在
    • 使用put(UK,UV)putAll(Map<UK,UV>)添加映射。
    • 使用get(UK)检索特定key。
    • 使用entries(),keys()和values()分别检索映射、键和值的可迭代视图
  • ValueState<T>:类型为T的单值状态

    • update(T):保存一个可以更新和检索的值(每个值都对应到当前的输入数据的key,因此算子接收到的每个key都可能对应一个值)。
    • T value()进行检索。
  • ListState<T>:key上的状态值为一个列表

    • 保存一个元素的列表,可以往这个列表中追加数据,并在当前的列表上进行检索。
    • add(T)或者addAll(List)进行添加元素,
    • Iterable get()获得整个列表。
    • update(List)覆盖当前的列表。
  • BroadcastState:具有Broadcast流的特殊属性

    • 类似批处理中广播变量:将小表数据广播到TaskManager内存,被Slot中运行Task任务使用
    • 一种小数据状态广播向其它流的形式,从而避免大数据流量的传输;
    • 其它流是对广播状态只有读操作的权限,因为不同任务间没有跨任务的信息交流。
    • 一旦有运行实例对于广播状态数据进行更新了,就会造成状态不一致现象。

实时效果反馈

1. 以下选项中关于Flink状态相关接口的描述错误的是?

A ValueState<T>:类型为T的单值状态。每个值都对应到当前输入数据的key,因此算子接收 到的每个key都可能对应一个值。

B ListState<T>:只能表示key上的状态值为一个列表。

C MapState<UK,UV>:即状态值为一个map,维护了一个映射列表,可以添加键值对到状态 中,也可以获得反映当前所有映射的迭代器。

D Broadcast State:具有Broadcast流的特殊属性,类似批处理中广播变量:将小表数据广播 到TaskManager内存,被Slot中运行Task任务使用。

答案:

1=>B 也可以用于保存 Operator State。

 

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2