Flink Window触发机制

这篇博客详细介绍了Flink的Window类型,包括CountWindow、TimeWindow和SessionWindow,以及它们的滑动和滚动区分。文章重点阐述了窗口函数的应用,如全量聚合和增量聚合,列举了reduce、fold、aggregate等常见聚合函数。同时,解释了Window何时被触发,触发机制由Trigger的onElement方法决定,特别讨论了EventTimeTrigger的工作原理。
摘要由CSDN通过智能技术生成

 

Flink的Window类型

Flink基本分有3种window类型:CountWindow,TimeWindow和SessionWindow。
其中,CountWindow和TimeWindow还有滑动与滚动区分。

通常,window的api定义形式为:

stream
      .keyBy(...)
      .window(...)   // timeWindow,countWindow,SessionWindows.withGap(Time.minutes(10))
      [.trigger(...)]
      [.evictor(...)]
      [.allowedLateness()]
      .reduce/fold/apply()

 

 

窗口函数有哪些

 

定义完窗口分配器后,需要指定在每个窗口上执行的计算,这就是窗口函数的职责。
在了解有哪些窗口函数之前,有必要了解Window的聚合分类:
全量聚合:简单点说是等属于窗口的数据到齐之后,才开始进行聚合计算;即全量聚合在未触发之前,会保存之前的状态,在最后窗口触发时,才会进行计算。(所以全量聚合的压力会很大。)
常见的窗口函数:
apply(WindowFunction) --- 不过1.3之后被弃用
process(processWindowFunction)

增量聚合:窗口每进入一条数据,就进行一次计算。
reduce(reduceFunction)ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值