大数据笔记之 Flink1.17 算子


前言

前无言


一、Partition分区(物理分区)

1.1 随机分区 shuffle

随机分区(在 1 号线程和 2 号线程所在分区 随机输出),逻辑实现方法是:random.nextInt(下游算子并行度)

1.2 轮询分区 rebalance

如果是数据源倾斜的场景,source 后,调用 rebalance就可以解决数据源的倾斜问题

1.3 重缩放分区 rescale

rescale缩放:实现轮询,局部组队,比reblance更高效

1.4 广播分区 broadcast

发给下游所有的子任务,有几个并行子任务就发几个

1.5 全局分区 global

全部发往第一个子任务

1.6 keyby

按照指定 key 去发送,相同 key 发往同一个子任务。
one-to-one:Forward 分区器

1.7 自定义分区 Custom

二、transform

2.1 flatMap

flatMap()的输出可以是零个、一个或多个元素。通过 Collector来输出, 调用几次就输出几条。该方法的返参是 void。当输出元素是一个列表时,flatMap()会将列表展平。

2.2 filter

过滤,true 保留

2.3 RichFunction

RichMapFunction类是一种RichFunction类,它除了提供MapFunction类的基础功能,还提供了一系列其他方法,包括open()、close()、getRuntimeContext()和setRuntimeContext()等方法,重写这些方法可以创建状态数据、对数据进行广播、获取累加器和计数器等。

  1. Rich 类函数多了声明周期管理方法
  • open():每个子任务,在启动前,调用一次
  • close():每个子任务,在结束时,调用一次
    • 如果是 flink 程序异常挂掉,不会调用 close
    • 如果是正常调用 cancel 命令,可以 close
  1. 多一个运行时上下文
    可以获取一些运行时的环境行信息,比如子任务编号、名称,等其他。

2.4 map

一进一出。
map()对一个DataStream中的每个元素使用用户自定义的Mapper函数进行处理,每个输入元素对应一个输出元素,最终整个数据流被转换成一个新的DataStream。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值