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

Flink事件时间会话窗口的最大总时间

颛孙昆
2023-03-14

我想知道是否可以创建类似于以下内容的WindowAssigner:

EventTimeSessionWindows.withGap(Time.seconds(1L))

但我不希望窗口在每个元素的事件时间中保持增长。我希望在接收到的第一个元素(对于该键)处定义窗口的开头,并在1秒后精确结束,无论有多少元素到达该秒。

所以它可能看起来像这样的假设:

EventTimeSessionWindows.withMax(Time.seconds(1L))

谢谢

共有1个答案

孔安福
2023-03-14

此用例没有内置窗口。

但是,您可以使用收集所有传入元素的全局窗口和在接收到元素且窗口为空时注册计时器的触发器来实现这一点,即第一个元素或清除窗口后的第一个元素。窗口收集新元素,直到计时器触发。此时,将评估并清除窗口。

 类似资料:
  • 当我使用 flink 事件时间窗口时,窗口只是不触发。如何解决问题,有没有办法调试?

  • 的结果是一个元素流-因此,我希望从这个流中获得一个“具有最高计数的key”的更新流。 然后我通过一个常量(-因为这是一个全局操作)进行键控,并使用-这几乎可以实现:我得到一个最高计数流,但当前的最高计数是针对每个元素发出的。 我想我要找的是某种带有前一个值的过滤器,它只会在新值与前一个值不同时才会发出元素。 目前在Flink有可能吗?

  • 我的Flink工作必须在每次工作轮班后计算某个集合。换挡是可配置的,看起来类似于: 出于操作目的,每天的班次都是一样的,一周/一年中的几天之间没有区别。轮班配置可以随时间变化,并且可以不单调,因此表中留下了一个简单的EventTime窗口,如:,因为一些轮班可能会缩小或超时,或者在中间插入几个小时... 我想出了一些基于GlobalWindow和自定义触发器的东西: 在我的自定义触发器中,我尝试识

  • 我有一个带有数据和时间戳的记录日志,我的Flink应用程序按时间戳升序接收记录。在某个键的第一个项到达窗口后,我想在X事件时间后关闭窗口,检查是否有足够的项到达某个条件,并为该键发出通过或失败消息。 对于Flink中的基本窗口功能,这是不可能的吗?例如,如果我希望我的窗口有30秒长,但是键的第一个项在15秒到达,最后一个项在40秒到达,似乎窗口将在30秒关闭,并且该键的记录轨迹将是分成两个窗口。在

  • 假设我有一个股票市场交易事件流,如下所示: 使得technicalN(其中N是一些数字)代表给定公司的日终股票市场交易数据的第N个技术交易条目[开盘(浮动)、高位(浮动)、低位(浮动)、收盘(浮动)、成交量(int)]。(即ticker GOOG的技术1不同于ticker MSFT的技术1。)如: (请注意,这些交易价格/交易量完全是虚构的。 假设我想创建一个大小为2、时间间隔为1天的窗口,这样我