Flink的window操作之Window Functions(二)

本文深入探讨Flink的窗口函数,包括ReduceFunction、AggregateFunction和FoldFunction。这些函数在窗口准备就绪后处理元素,用于增量聚合。ReduceFunction和AggregateFunction提供更高效的窗口操作,而WindowFunction可能效率较低,但能获取窗口元信息。文章通过示例展示了每种函数的使用。
摘要由CSDN通过智能技术生成

上一篇中介绍了Flink中的window操作,接着介绍一下窗口函数.

Window Functions

在定义了窗口分配器之后呢,我们需要为每一个窗口明确的指定计算,这个就是窗口函数要做的事情,当系统决定一个窗口已经准备好执行之后,这个窗口函数将被用来处理窗口中的每一个元素(可能是分组的)。

窗口函数可以是ReduceFunction, FoldFunction , WindowFunction 他们三个中的一个。前面两个更高效一些,因为在每个窗口中增量地对每一个到达的元素执行聚合操作。一个 WindowFunction 可以获取一个窗口中的所有元素的一个迭代以及哪个元素属于哪个窗口的额外元信息。
  有WindowFunction的窗口化操作会比其他的操作效率要差一些,因为Flink内部在调用函数之前会将窗口中的所有元素都缓存起来。这个可以通过WindowFunction和ReduceFunction或者FoldFunction结合使用来获取窗口中所有元素的增量聚合和WindowFunction接收的额外的窗口元数据,接下来我们将看一看每一种变体的示例.

ReduceFunction

ReduceFunction指定了如何通过两个输入的参数进行合并输出一个同类型的参数的过程,Flink使用ReduceFunction来对窗口中的元素进行增量聚合。一个ReduceFunction 可以通过如下的方式来定义和使用:

val input: DataStream[(String, Long)] = ...

input
    .keyBy(<key selector>)
    .window(<window assigner>)
    .redu
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JasonLee实时计算

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值