栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Flink窗口应用代码结构

Flink窗口应用代码结构

在流处理应用中,数据是连续不断的,有时我们需要做一些聚合类的处理,例如:在过去的1分钟内有多少用户点击了我们的网页。

在这种情况下,我们必须定义一个窗口(window),用来收集最近1分钟内的数据,并对这个窗口内的数据进行计算。

Windows 是处理无限流的核心。Windows 将流拆分为有限大小的“桶”,我们可以对其进行计算。

 

Keyed Window

// Keyed Window

stream

        .keyBy(...)              <-  按照一个Key进行分组

        .window(...)            <-  将数据流中的元素分配到相应的窗口中

        [.trigger(...)]            <-  指定触发器Trigger(可选)

        [.evictor(...)]            <-  指定清除器Evictor(可选)

        .reduce/aggregate/process()      <-  窗口处理函数Window Function

Non-Keyed Window

// Non-Keyed Window

stream

        .windowAll(...)         <-  不分组,将数据流中的所有元素分配到相应的窗口中

        [.trigger(...)]            <-  指定触发器Trigger(可选)

        [.evictor(...)]            <-  指定清除器Evictor(可选)

        .reduce/aggregate/process()      <-  窗口处理函数Window Function

在上面,方括号 ([…]) 中的命令是可选的。这表明 Flink 允许您以多种不同的方式自定义窗口逻辑,使其最适合需求。

首先:我们要决定是否对一个DataStream按照Key进行分组,这一步必须在窗口计算之前进行。经过keyBy的数据流将形成多组数据,下游算子的多个实例可以并行计算。windowAll不对数据流进行分组,所有数据将发送到下游算子单个实例上。决定是否分组之后,窗口的后续操作基本相同,经过windowAll的算子是不分组的窗口(Non-Keyed Window),它们的原理和操作与Keyed Window类似,唯一的区别在于所有数据将发送给下游的单个实例,或者说下游算子的并行度为1。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/439248.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号