flink分区与算子链

flink分区与算子链

  • [flink 分区策略](#flink 分区策略)
  • [flink 什么情况下才会把 Operator chain 在一起形成算子链?](#flink 什么情况下才会把 Operator chain 在一起形成算子链?)
  1. GlobalPartitioner 数据会被分发到下游算子的第一个实例中进行处理
  2. RebalancePartitioner 数 据会 被循 环发 送到 下 游的 每一 个实 例中 进 行处 理。
  3. RescalePartitioner 这种分区器会根据上下游算子的并行度,循环的方式输出到下游算子的每个实例。
  4. BroadcastPartitioner 广播分区会将上游数据输出到下游算子的每个实例中 。 适 合 于大数据集和小数据集做Jion的场景。
  5. ForwardPartitioner 用于将记录输出到下游本地的算子实例。它要求上下游 算 子 并 行 度 一 样 。 简单的说 , ForwardPartitioner 用来做数据的控制台打印 。(也是chain算子的条件)
  6. KeyGroupStreamPartitioner Hash 分区器。会将数据按 Key 的 Hash 值输出到下游算子实例中。
  7. CustomPartitionerWrapper 用户自定义分区器。需要用户自己实现 Partitioner 接口,来定义自己的分区逻辑

RescalePartitioner这里有点难以理解,假设上游并行度为 2,编号为 A 和 B。下游并行度为 4,编号为 1,2,3,4。那么 A 则把数据循环发送给 1 和 2,B 则把数据循环发送给 3 和 4。假设上游并行度为 4,编号为 A,B,C,D。下游并 行度 ,编号为 1,2。那么 A 和 B 则把数据发送给 1,C 和 D 则把数据发送给 2。

  • 上下游的并行度一致
  • 下游节点的入度为 1 (也就是说下游节点没有来自其他节点的输入)
  • 上下游节点都在同一个 slot group 中
  • 两个节点间数据分区方式是 forward(参考理解数据流的分区) 否则都是all_to_all
  • 上下游节点的 chain 策略为 ALWAYS
相关推荐
拾光师3 分钟前
MapReduce OutputFormat 解析:结果怎么从键值对变成文件
大数据
Allen_LVyingbo4 分钟前
医疗人工智能项目全生命周期管理系统:监管知识建模、工程实现与实证评估(下)
大数据·数据库·人工智能·python·自然语言处理·自动化
志栋智能7 分钟前
超自动化巡检如何生成“有灵魂”的运维报告?
大数据·运维·人工智能·架构·自动化
湘美书院--湘美谈教育21 分钟前
湘美书院随笔:AI时代的生活经济学
大数据·人工智能·安全·自动化·生活
用户36105886261229 分钟前
Flink高级之侧输出流Side Output原理及代码实现:从OutputTag到多流分发
大数据·flink
Geeys1 小时前
3an推客是什么用途
大数据
shirsl1 小时前
数据开发每日面试题 Day 5
大数据·数据库·sql·big data
llilian_161 小时前
PTP时钟服务器时间溢出隐患解决方案 1588时钟服务器 ptp服务器
大数据·网络·单片机·嵌入式硬件·51单片机
Elastic 中国社区官方博客1 小时前
将 Vercel 数据导入 Elastic:无需安装任何东西的无服务器可观测性
大数据·运维·elasticsearch·搜索引擎·云原生·serverless·全文检索
cspttty1 小时前
数字营销应届岗技能栈:Excel、SQL、GA4、投放平台与AI工具怎么学
大数据