小白学习Flink系列--第三篇(概念)之Trigger

Trigger

什么是Trigger?

翻译过来中文意思是触发器,显然这个解释是懵逼的,读者肯定有以下疑问,

触发什么?什么时候触发?为什么需要触发器?带着疑问我们来学习Flink

Trigger详解

  • Trigger是干嘛的呢?

    • 读者在理解trigger的时候,一定要和watermark以及window联系起来,上节讲到watermark的语义是表示后来到达的数据再也没有小于这个时间了,window机制决定了对数据进行离散化,也就是决定数据属于哪一个窗口,watermark+windows用于处理数据乱序问题,那么数据处理完成后,什么时候落地呢?这就要靠Trigger
  • 为什么需要Trigger?

    ​ 请参考之前的文章《小白学习Flink系列–第二篇-02(流式数据模型)》,简而言之就是watermarks存在短板,这也是前文提到了,Flink需要采取一系列的机制来完善Event Time,就是Watermark和Trigger

    什么时候触发Trigger?

    触发Trigger的信号包含:

    • Watermark的推进(也就是业务时间的推进)::当Watermark达到窗口尾部时,窗口的输出被发送。另一个例子是当时间窗口过期时,触发垃圾回收,我们将在之后重新回顾这个例子。
    • 处理时间的推进:这在按一定的时间间隔更新数据时非常有用,因为处理时间不像业务时间,是稳定而无延时的。
    • 元素数据:在接收到一定数量的元素就触发的场景非常有用。
    • 特定符号标志:这个场景下,Trigger的触发依赖一个特定的符号数据(比如一次flush中的EOF标志)。

    Trigger函数

    ​ trigger() 用来判断一个窗口是否需要被触发,每个 WindowAssigner 都自带一个默认的 trigger,如果默认的 trigger 不能满足你的需求,则可以自定义一个类,继承自 Trigger 即可,我们详细描述下 Trigger 的接口以及含义:

    • onElement():每次往 window 增加一个元素的时候都会触发
    • onEventTime():当 event-time timer 被触发的时候会调用
    • onProcessingTime():当 processing-time timer 被触发的时候会调用
    • onMerge():对两个 trigger 的 state 进行 merge 操作
    • clear():window销毁的时候被调用

    上面的接口中前三个会返回一个 TriggerResult,TriggerResult 有如下几种可能的选择:

    • CONTINUE:不做任何事情
    • FIRE:触发 window
    • PURGE:清空整个 window 的元素并销毁窗口
    • FIRE_AND_PURGE:触发窗口,然后销毁窗口

    由于Trigger实际上经常和watermark,windows机制一一起使用,所以我会在后边的API实践中一块讲到,这片先让我们了解Trigger。

    福利

    看书看不懂怎么办?学习视频安排!

    没有实践项目只会Demo怎么办?实践项目安排!

    面试好慌怎么办?面经大全安排!

    扫描下方关注,点击联系我,添加vx即可获取Flink大礼包!!

    悄悄说一下,有找不到的学习资源也可以私信答主,毕竟我是行走的资源库

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值