当前位置: 首页 > 知识库问答 >
问题:

Apache Flink:增量窗口计算

空英逸
2023-03-14

在Apache Flink中使用滑动时间窗口时,当窗口滑动时会重新计算窗口中的许多元组/元素。例如,假设一个窗口大小为5秒,滑动时间为1秒,则窗口内容的80%与上一个窗口的内容相同。

window(SlidingEventTimeWindows.of(Time.seconds(5), Time.seconds(1)))

考虑一个数据流S,其元组由时间戳和整数值组成: , , , , , , ,...

假设t1、t2、t3、...表示连续时间戳,其中t2-t1=1秒。给定S,窗口大小为5秒、滑动1秒的Flink窗口化ProcessWindowFunction获得元组如下所示:

Window1: <t1,12>, <t2,3>, <t3,15>, <t4,7>, <t5,9>
Window2: <t2,3>, <t3,15>, <t4,7>, <t5,9>, <t6,18>
Window3: <t3,15>, <t4,7>, <t5,9>, <t6,18>, <t7,2>
...

我认为一个解决方案是利用最后一个窗口结束时间戳来忽略当前ProcessWindowFunction中的计算,但这样做只节省少量计算,因为元组已经在ProcessWindowFunction中。有没有办法在到达ProcessWindowFunction之前过滤掉重叠的元组?

共有1个答案

西门威
2023-03-14

我不明白眼前的问题是什么:性能?还是只有不重叠的元组?所以我两个都回答:

具有不重叠的元组

看来你需要:

window(TumblingEventTimeWindows.of(Time.seconds(1)))
 类似资料:
  • 我有以下代码来计算socketTextStream中的单词。累积字数和时间窗字数都是必需的。该程序存在累积计数始终与窗口计数相同的问题。为什么会出现这个问题?根据加窗计数计算累积计数的正确方法是什么?

  • 我的工作是做以下事情: 根据事件时间使用Kafka主题中的事件 计算7天的窗口大小,以1天的幻灯片显示 将结果放入Redis 我有几个问题: 如果它从最近的记录中消耗Kafka事件,在作业存活1天后,作业关闭窗口并计算7天窗口。问题是作业只有1天的数据,因此结果是错误的。 如果我尝试让它从7天前的时间戳中消耗Kafka事件,当作业开始时,它从第一天开始计算整个窗口,并且花费了很多时间。另外,我只想

  • 在中,元素被分配给一个或多个实例。在滑动事件时间窗口的情况下,这发生在1中。 如果窗口的和,则将时间戳为0的元素分配到以下窗口: 窗口(开始=0,结束=5) 窗口(开始=-1,结束=4) 窗口(开始=-2,结束=3) 窗口(开始=-3,结束=2) 窗口(开始=-4,结束=1) 在一幅图片中: 有没有办法告诉Flink时间有开始,而在那之前,没有窗户?如果没有,从哪里开始寻求改变?在上述情况下,Fl

  • 如何在ApacheFlink中为会话窗口分配id? 最后,我希望在会话窗口打开时,使用会话窗口id逐个充实事件(我不希望等到窗口关闭后再发出充实事件)。 我尝试使用AggregateFunction来实现这一点,但是我认为merge()并没有像我所期望的那样工作。它似乎是用于合并窗口而不是窗格(触发触发)。在我的管道中似乎从未调用过它。因此,触发器之间似乎没有共享状态! 会话窗口ID将是落入窗口的

  • 问题内容: 在angularJs中可以观看全局变量吗? 我从旧版代码中设置了一个window.test变量,然后我需要观察该变量以了解它是否存在。 我尝试过类似的东西 问题答案: 有些。您可以包含Angular 服务(如文档所述,比直接访问更安全): 然后使用watch函数作为您的第一个参数,如下所示: 演示小提琴 但是请注意,只有在触发Angular进行$ digest操作后,才会执行。一种可行

  • 新增观众量统计 1、获取用户维度下按小时统计的新增观众量,该接口仅提供某一天的数据查询。地址为: https://spark.bokecc.com/api/stats/newuniquevisitor/user/hourly 需要传递以下参数: 参数 说明 userid 用户 id,不可为空 date 查询日期,日期不能大于今日,格式为yyyy-MM-dd,不可为空 返回数据new_unique_