美文网首页
Flink_Physical Partitioning&& R

Flink_Physical Partitioning&& R

作者: Eqo | 来源:发表于2022-08-19 00:03 被阅读0次

Physical Partitioning 物理分区

DataStream提供物理分区算子:决定上游Operator中各个分区数据如何发送到下游Operator的各个分区中。


image.png

在DataStream函数中提供7种方式,常见的物理分区策略有随机分配(Random)、轮询分配(Round-Robin)、重缩放(Rescale)和广播(Broadcast)

  • global 全局算子
    将上游所有的subtask处理的数据,发送给下游第一个subtask处理
  • broadcast 广播算子
    上有内的一个subtask任务给下游所有的subtask 都发一份
    适合 大表join小表
  • forword 向前分区算子
    上游subtask 跟下游subtask 1:1 必须一一对应不然报错
  • shuffle
    随机选择 上有shuffle 随机分发到下游的subtask
  • rebalance 平衡算子
    将上游所有的subtask 处理的数据 轮询的发送给下游的subtask
    在flink中如果数据发送倾斜 直接调用 rebalance算子均衡分配
  • rescale 基于并行度的算子
    要求上下游的subtask的个数 必须是成倍数
  • custom
    自定义分区算子


    image.png

RichFunction

  • “富函数”是DataStream API提供的一个函数类的接口,==所有Flink函数类都有其Rich版本==。富函数类一般是以抽象类的形式出现的。

  • 富函数RichFunction,可以获取运行环境的上下文,并拥有一些生命周期方法

方法

  • context 上下文对象:封装了程序运行时,才知道的一些参数,列如并行度,statu 状态 任务名字

    • open()方法:
      rich function的初始化方法,当一个算子例如map或者filter被调用之前open()会被调用,通常只用于那些只需要进行一次的设置工作

    • close()方法:
      生命周期中的最后一个调用的方法,做一些清理工作。
      每个任务最后一次调用转换方法后调用一次。通常用于清理和释放资源。

    • getRuntimeContext()方法:
      提供了函数的RuntimeContext的一些信息,例如函数执行的并行度,任务的名字,以及state状态。

使用场景

当处理数据时,如果涉及到数据库连接、网络连接以及文件描述符的创建和关闭,使用富函数,以及想要了解 任务执行的一些信息

global

image.png

broadcast

image.png

forword 向前分区算子

image.png

shuffle

image.png

rebalance

image.png

rescale

image.png

custom

image.png

相关文章

网友评论

      本文标题:Flink_Physical Partitioning&& R

      本文链接:https://www.haomeiwen.com/subject/pwyugrtx.html