Flink状态编程之按键分区状态

这篇具有很好参考价值的文章主要介绍了Flink状态编程之按键分区状态。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

在实际应用中,我们一般都需要将数据按照某个 key 进行分区,然后再进行计算处理;所
以最为常见的状态类型就是 Keyed State。之前介绍到 keyBy 之后的聚合、窗口计算,算子所
持有的状态,都是 Keyed State。
另外,我们还可以通过富函数类(Rich Function)对转换算子进行扩展、实现自定义功能,
比如 RichMapFunction、RichFilterFunction。在富函数中,我们可以调用.getRuntimeContext()
获取当前的运行时上下文(RuntimeContext),进而获取到访问状态的句柄;这种富函数中自
定义的状态也是 Keyed State。

什么是Key State

按键分区状态(Keyed State)顾名思义,是任务按照键(key)来访问和维护的状态。它
的特点非常鲜明,就是以 key 为作用范围进行隔离。
在进行按键分区之后,具有相同键的所有数据,都会分配到同一个并行子任务中;所以如
果当前任务定义了状态,Flink 就会在当前并行子任务实例中,为每个键值维护一个状态的实
例。于是当前任务就会为分配来的所有数据,按照 key 维护和处理对应的状态。
在底层,Keyed State 类似于一个分布式的映射(map)数据结构,所有的状态会根据 key
保存成键值对(key-value)的形式。这样当一条数据到来时,任务就会自动将状态的访问范围
限定为当文章来源地址https://www.toymoban.com/news/detail-824409.html

到了这里,关于Flink状态编程之按键分区状态的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Flink】Flink 的八种分区策略(源码解读)

    Flink 包含 8 种分区策略,这 8 种分区策略(分区器)分别如下面所示,本文将从源码的角度解读每个分区器的实现方式。 GlobalPartitioner ShufflePartitioner RebalancePartitioner RescalePartitioner BroadcastPartitioner ForwardPartitioner KeyGroupStreamPartitioner CustomPartitionerWrapper 该分区器会将所有的数据都

    2024年04月10日
    浏览(36)
  • flink重温笔记(四):Flink 流批一体 API 开发——物理分区(上)

    前言:今天是学习flink的第四天啦!学习了物理分区的知识点,这一次学习了前4个简单的物理分区,称之为简单分区篇! Tips:我相信自己会越来会好的,明天攻克困难分区篇,加油! 3. 物理分区 3.1 Global Partitioner 该分区器会将所有的数据都发送到下游的某个算子实例(subta

    2024年02月19日
    浏览(39)
  • flink重温笔记(五):Flink 流批一体 API 开发——物理分区(下)

    前言 :今天是学习 flink 的第五天啦! 主要学习了物理分区较难理解的部分,在这个部分的三个分区的学习中, rescale partition 和 forward partition 其原理可以归类 pointwise 模式,其他的 partition 其原理可以归类 all_to_all 模式,而比较有趣的是 custom partitioning,这个可以进行根据值

    2024年02月19日
    浏览(43)
  • Flink系列之:动态发现新增分区

    为了在不重新启动 Flink 作业的情况下处理主题扩展或主题创建等场景,可以将 Kafka 源配置为在提供的主题分区订阅模式下定期发现新分区。要启用分区发现,请为属性partition.discovery.interval.ms设置一个非负值。 flink程序增加自动发现分区参数: flink.partition-discovery.interval-mil

    2024年02月13日
    浏览(41)
  • Flink学习6-自定义分区器介绍

    背景说明 我们都知道自定义source是可以自定义并行度的,数据读写有几个并行度就意味着有几个分区。那么怎么控制我想要的数据流入到指定分区呢?flink1.12官方文档给我们提供了一下几种方式,接下来我们分别进行讨论。 partitionCustom分区器 按照官方的原话翻译过来就是使

    2023年04月14日
    浏览(34)
  • Flink 学习七 Flink 状态(flink state)

    流式计算逻辑中,比如sum,max; 需要记录和后面计算使用到一些历史的累计数据, 状态就是 :用户在程序逻辑中用于记录信息的变量 在Flink 中 ,状态state 不仅仅是要记录状态;在程序运行中如果失败,是需要重新恢复,所以这个状态也是需要持久化;一遍后续程序继续运行 1.1 row state 我

    2024年02月09日
    浏览(41)
  • Flink 中KeyBy、分区、分组的正确理解

    在Flink中,KeyBy作为我们常用的一个聚合类型算子,它可以按照相同的Key对数据进行重新分区,分区之后分配到对应的子任务当中去。 源码解析 keyBy 得到的结果将不再是 DataStream,而是会将 DataStream 转换为 KeyedStream(键控流),KeyedStream 可以认为是“分区流”或者“键控流”,它

    2024年02月04日
    浏览(34)
  • Flink KafkaSink分区配置的不同版本对比

    Flink KafkaSink分区配置的不同版本对比 在不同版本的Flink中,KafkaSink 分区默认配置方式可能会有一些变化。以下是摘自Flink官方文档不同版本的原文: 1. Flink版本:1.12~1.19 Sink 分区 # 配置项 sink.partitioner 指定了从 Flink 分区到 Kafka 分区的映射关系。 默认情况下,Flink 使用 Kafka

    2024年04月24日
    浏览(33)
  • 【flink番外篇】2、flink的23种算子window join 和interval join 数据倾斜、分区介绍及详细示例(3)- 数据倾斜处理、分区示例

    一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、

    2024年02月03日
    浏览(58)
  • 07-Flink的keyby怎么实现的分区?分区、分组的区别是什么?

    Keyby实现原理: 对指定的key调用自身的hashCode方法=》hash1 调用murmruhash算法,进行第二次hash =》键组ID 通过一个公式,计算出当前数据应该去往哪个下游分区: 键组id * 下游算子并行度 / 最大并行度(默认128) 分区:算子的一个并行实例可以理解成一个分区,是物理上的资源

    2024年02月11日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包