Flink 源码解读系列 DataStream 窗口分配器 WinowAssigner
Posted @SmartSi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flink 源码解读系列 DataStream 窗口分配器 WinowAssigner相关的知识,希望对你有一定的参考价值。
在前一篇文章 Flink 源码解读系列 DataStream 窗口 Window 实现 中,我们了解到 Flink 窗口 Window 有两种具体实现,一个是 TimeWindow,一个是 GlobalWindow。有了窗口之后,我们如何将元素分配给窗口呢?在这篇文章中我们重点了解一下窗口分配器 WindowAssigner 是如何将输入流中的元素划分给窗口的。
1. 如何指定窗口分配器
在了解窗口分配器 WindowAssigner 内部实现之前,我们先看一下如何为窗口算子指定窗口分配器。Flink 为我们提供了几种指定窗口分配器的方式,具体取决于输入流是不是 KeyedStream。如果是在 KeyedStream 上使用窗口,可以使用如下三个方法指定窗口分配器:
- window()
- timeWindow()
- countWindow()
如果是在 DataStream 上使用窗口,可以使用如下三个方法指定窗口分配器:
- windowAll
- timeWindowAll()
- countWindowAll()
在 KeyedStream 和 DataStream 上使用窗口的方式基本一致。
1.1 window
在 KeyedStream 上可以通过 window 方法指定窗口分配器,而对于 DataStream 则需要使用 windowAll 方法指定:
以上是关于Flink 源码解读系列 DataStream 窗口分配器 WinowAssigner的主要内容,如果未能解决你的问题,请参考以下文章
Flink 源码解读系列 DataStream 数据流元素 StreamElement
Flink 源码解读系列 DataStream 数据流元素 StreamElement
Flink 源码解读系列 DataStream 窗口分配器 WinowAssigner