美文网首页
Flink内window机制的实现和应用

Flink内window机制的实现和应用

作者: 没有格子衬衫的程序员 | 来源:发表于2020-01-13 20:52 被阅读0次

在工作中需要计算指定时间段内的某产品新增用户,可以实现的技术方案有多种,比如Spark StructedStreaming和 Flink Streaming。下面以Flink 2.11代码为例,阐述一下Flink内的window机制。

window分类

在Flink Streaming里,窗口可以分为countWindow,timeWindow和window;而这三种窗口,又可以细分,例如tumbligWindow和slidingWindow;tumblingWindow任意两个窗口之间,没有数据的交集;slidingWindow两个或者多个窗口之间,会有数据的交集,如下所示:

TimeWindow的实现

在Flink内,针对元素主要有三种时间,分别processing Time, Event Time, Ingest Time;在keyedStream类内查看代码可以看到,在timeWindow函数内,Event Time 和Ingest Time都是通过EventTimeWindowAssginer来创建WindowStream,其他情况下则是通过ProcessingTimeWindow来创建window Stream。

在Sliding Time window内,assinger在根据元素分配窗口时,首先会创建size/slide个window,每个窗口的大小为size,并且在每个窗口结束的时候,注册一个定时器;当定时器触发时,会调用该窗口对应的Trigger类中的onProcessingTime方法,然后调用对应的window function.代码如下所示:

CountWindow的实现同Timewindow类似,分为TumblingCountWindow和SlidingCountWindow.

在Flink streaming内,windows机制主要有三部分组成:windows Assigner, trigger, evictor;

当每一条element到来时,由windows Assigner来决定这条element,分配到哪个window窗口;

当到达一定的触发条件以后,trigger会触发,对windows内的元素进行处理;在trigger调用以后,会调用evictor,根据用户调用的窗口类型和参数,来决定是在windows function之前或之后,对windows内的元素进行处理;整体流程关系如下所示:

Window Assigner用来决定element分配到哪个window内

window trigger用来判断一个窗口什么时候去计算或者清除

Evictor主要是在Trigger触发以后,在调用windowsFunction之前或之后,触发evictor函数,对windows内的元素,进行清理;目前主要有三类,继承关系如下:

相关文章

  • Flink内window机制的实现和应用

    在工作中需要计算指定时间段内的某产品新增用户,可以实现的技术方案有多种,比如Spark StructedStrea...

  • Flink 原理与实现:Session Window

    在上一篇文章:Window机制中,我们介绍了窗口的概念和底层实现,以及 Flink 一些内建的窗口,包括滑动窗口、...

  • Flink window机制

    问题 window是解决流计算中的什么问题? 怎么划分window?有哪几种window?window与时间属性之...

  • Flink 原理与实现:Window 机制

    摘要 Flink 认为 Batch 是 Streaming 的一个特例,所以 Flink 底层引擎是一个流式引擎,...

  • Flink 原理与实现:Window 机制

    Flink 认为 Batch 是 Streaming 的一个特例,所以 Flink 底层引擎是一个流式引擎,在上面...

  • Flink的window机制

    Window在流式计算中很重要,因为”流”是一个无终点的持续输入,所以通过window机制来分块,进行聚合等各种处...

  • Flink 1.11 Unaligned Checkpoint

    作为 Flink 最基础也是最关键的容错机制,Checkpoint 快照机制很好地保证了 Flink 应用从异常状...

  • Flink Window触发机制

    1. Flink的Window类型 Flink基本分有3种window类型:CountWindow,TimeWin...

  • flink---window机制

    1.简介 流式处理中,数据连续不断的产生,flink使用窗口机制将无限的数据有限化,比如每5s计算一次数据中最大值...

  • Flink如何管理Kafka 消费位点(译文)

    Checkpointing 是 Flink 故障恢复的内部机制。一个 checkpoint 就是 Flink应用程...

网友评论

      本文标题:Flink内window机制的实现和应用

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