Flink中的window操作是非常丰富的,不得不承认这一点要比spark做的好很多,由于Flink的window机制是比较复杂的,也比较的难理解,所以我会分几篇去介绍他,下面我们一起揭开它神秘的面纱,听我细细道来.
什么是Windows?
窗口是无限流处理的核心部分,窗口把无限的流分成了有限大小的桶,我们可以在桶上面进行计算,这篇文章会教大家在Flink中如何进行窗口操作,以及开发者如何从Flink提供的窗口函数中获得最大的收益.
为什么需要Window呢?
在一些流的应用中,数据都是连续性的,因此我们不能等待所有数据都流进来才开始处理,当然了,我们可以只要数据一进来就立马开始处理,然后等下一个数据,但是呢,在另外一些需求中,我们可能需要做一些聚合对于到来的数据,比如说,在过去的10分钟内,用户点击了多少次页面的链接,在这种例子中呢,我们就必须定义一个窗口,然后在这个窗口内对数据进行计算.
在Flink的窗口化程序中一般的结构如下,分组的流和非分组的流,他们唯一的区别就是分组流调用了keyBy(…)和window(…),而非分组的流window()换成了windowAll(…).
Keyed Windows
stream
.keyBy(...) <- keyed versus non-keyed windows
.window(...)
Flink中的window操作是流处理的核心,将无限流划分为有限桶以便计算。本文介绍了窗口的概念、为何需要窗口以及Flink中的Keyed和Non-Keyed Windows。详细讨论了Tumbling Windows、Sliding Windows、Session Windows和Global Windows的特性和应用场景,并给出了基于时间和计数的窗口操作示例。
订阅专栏 解锁全文
3315

被折叠的 条评论
为什么被折叠?



