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 源码解读

Flink 源码解读系列 DataStream 数据流元素 StreamElement

Flink 源码解读系列 DataStream 数据流元素 StreamElement

Flink 源码解读系列 DataStream 窗口分配器 WinowAssigner

Flink 源码解读系列 DataStream 窗口分配器 WinowAssigner

Flink 源码解读系列 DataStream 时间服务管理器 TimeServiceManager 设计与实现