gpt4 book ai didi

java - flink - 在键控窗口上折叠

转载 作者:行者123 更新时间:2023-12-02 04:12:55 25 4
gpt4 key购买 nike

正在处理一些我想每 15 秒执行一次折叠的数据。从“外部”看来,窗口似乎保存了持续时间内的所有数据,然后将其一次性提交给折叠函数。

真相?

如果是这样,是否有一种方法可以在每次提交新数据时调用折叠函数,然后在窗口末尾仅返回结果?

是否可以组合一些其他转换来实现此效果?

最佳答案

你的观察是正确的,是的。原因是当前窗口运算符的实现有些有限。从概念上讲,窗口运算符中有两个元素:窗口缓冲区窗口函数。假设窗口运算符的输入类型是 IN输出类型为OUT 。现在,窗口缓冲区存储 IN 类型的元素。当需要发出元素时,它会发出 IN 类型的元素。窗口函数获取元素集合 IN 作为输入并发出 OUT 类型的元素(Collection[IN] -> OUT)。

如果窗口函数是一个reduce函数,我们可以在窗口缓冲区内进行预聚合,因为它的签名是(IN, IN) -> IN 。窗口函数基本上只从它可以发出的窗口缓冲区中获取一个元素。

如果我们想要有效的折叠,事情会变得稍微复杂一些,因为我们需要窗口缓冲区来获取IN类型的元素。但发出类型 OUT窗口函数如下所示:OUT -> OUT .

这是可以做到的,但现在还没有这样实现。 (顺便说一句,我为此打开了一个 Jira Issue: https://issues.apache.org/jira/browse/FLINK-2991 )

关于java - flink - 在键控窗口上折叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33616349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com