理解Flink算子链

news/2024/10/18 6:00:00/

前言

对于flink初学者,如果我们观察WebUi中任务执行情况,可能会有一个疑惑,为什么节点和代码中的算子对不上?
在这里插入图片描述
从WebUi上看起来像是一个节点,会把转换处理的很多个任务都连接在一起,合并成了一个“大任务”。这又是怎么回事呢?

算子间的数据传输

我们先来考察一下算子任务之间数据传输的方式。
在这里插入图片描述
如上图所示,一个数据流在算子之间传输数据的形式可以是一对一(one-to-one)的直通 (forwarding)模式,也可以是打乱的重分区(redistributing)模式,具体是哪一种形式,取决于算子的种类。

  1. 一对一(One-to-one,forwarding)
    这种模式下,数据流维护着分区以及元素的顺序。比如图中的 source 和 map 算子,source算子读取数据之后,可以直接发送给 map 算子做处理,它们之间不需要重新分区,也不需要调整数据的顺序。这就意味着 map 算子的子任务,看到的元素个数和顺序跟 source 算子的子任务产生的完全一样,保证着“一对一”的关系。map、filter、flatMap 等算子都是这种 one-to-one的对应关系。


http://www.ppmy.cn/news/1512385.html

相关文章

Moodle与ONLYOFFICE集成如何实现智能教学管理

陈老老老板🤴 🧙‍♂️本文专栏:生活(主要讲一下自己生活相关的内容)生活就像海洋,只有意志坚强的人,才能到达彼岸。 🧙‍♂️本文简述:ONLYOFFICE相信大家已经有所了解,本篇讲一下如…

Redis7基础篇(七)

redis哨兵(sentinel) 目录 redis哨兵(sentinel) 是什么 能干吗 案例演示 架构 案例步骤 出现的问题 哨兵的运行流程和选举原理 哨兵的使用建议​编辑 是什么 在之前的复制中我们了解到 主机shutdown之后 从机就会一直等…

vue3中实现给pdf加盖公章(手动拖拽公章确认位置)

开发项目时,碰到了一个这样的需求:需要前端从服务器获取到一个pdf文件,然后用户通过手动拖拽公章的方式确认公章应该加盖的位置,然后将位置信息传递给服务器。代码并不是非常完美,仅供大家参考。 引用的两个包版本为 …

C的动态内存管理 free()和malloc()的简单实现——free()根据内存地址便知释放内存的空间大小(原理详解)

malloc与free malloc 分配的内存是未初始化的,其中的字节内容是不确定的(可能是随机值)。 如果内存分配失败,malloc 返回一个空指针 NULL,可以通过检查返回值来判断是否分配成功。 void* malloc (size_t size); cal…

一个手机到手机之间通话经过了哪些设备

来源:https://www.bilibili.com/video/BV1ic411F7mM/?spm_id_from333.880.my_history.page.click&vd_source6c5d3cd50fc7fa8732bdfb760a055839 一个手机通话需要经过下面三个网络 类别接入网(Access Network)承载网(Transp…

关于路由和负载均衡

路由 想象你在一个大城市里,想去一个从未去过的新餐馆。你会怎么找到那里?你可能会用手机地图,对吧?地图告诉你从你现在的位置出发,应该先左转,再右转,走哪条街,过几个路口&#xf…

【并发编程】什么是CAS?Java是如何实现CAS操作的?

目录 一.什么是CAS? 二.Java中如何实现CAS操作? 一.什么是CAS? 在Java并发编程中,CAS 代表 "Compare-And-Swap"(交换并比较),这是一种用于实现无锁编程的原子操作。CAS操作通常用于…

【IDEA】idea配置服务器没有tomcat

IntelliJ IDEA 本身并不包含 Tomcat 服务器。 详细解释: IntelliJ IDEA 是一个集成开发环境 (IDE),为软件开发提供各种工具和功能。它专注于代码编辑、调试、代码重构和版本控制等任务。Tomcat 是一个 Java Servlet 容器和 Web 服务器,用于…