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

会话窗口如何在事件时间合并多个流?

季华茂
2023-03-14

从flink办公室引入会话窗口

https://ci.apache.org/projects/flink/flink-docs-stable/dev/stream/operators/windows.html#session-窗口。。。会话窗口操作符为每个到达的记录创建一个新窗口,如果窗口之间的距离比定义的间隙更近,则将窗口合并在一起。为了可合并,会话窗口操作符需要合并触发器和合并窗口函数,。。。

我有一个关于会话窗口合并的问题,情况如下

在这种情况下,两个流进入一个运算符,user1比user2提前到达,并且user1的第一个窗口与user2的第一个窗口的时间间隔超过GAP,会话窗口如何合并user1和user2的第一个窗口?

在事件时间中,以下哪种情况?图像的上述时间是事件时间。

案例1:

第一个会话窗口:用户1的w1

会话窗口第二个:user1的w2,user2的w1

案例2:

第一个会话窗口:用户1的w1,用户2的w1

第二个会话窗口:user2的w2

共有1个答案

毛弘博
2023-03-14

从留档复制的图显示了带键的会话窗口,其中窗口独立应用于来自不同用户的流。使用键控会话窗口,不同键(即不同用户)的窗口将永远不会合并。

换句话说,会话窗口不会“合并多个流”。要么窗口未设置关键帧,在这种情况下,只有一个流;要么窗口设置为关键帧分区,在这种情况下,每个关键帧的会话都是独立确定的。

这种模式贯穿于Flink的API。允许独立处理键控流对于可伸缩性至关重要。

 类似资料:
  • 我想知道是否可以创建类似于以下内容的WindowAssigner: 但我不希望窗口在每个元素的事件时间中保持增长。我希望在接收到的第一个元素(对于该键)处定义窗口的开头,并在1秒后精确结束,无论有多少元素到达该秒。 所以它可能看起来像这样的假设: 谢谢

  • 我们有多个具有不同业务事件(页面视图、单击、滚动事件等)的输入主题。据我所知,Kafka流都有一个事件时间戳,可用于KStream与其他流或表的连接以对齐时间。 我们要做的是:合并用户id(即按用户id分组)的所有不同事件(源自上述不同主题),并对其应用会话窗口。 这应该通过在包含所有事件的流上使用,然后使用(在此指定非活动时间)来实现。这个组合流必须按照事件时间的顺序(或者以上kafka流方法尊

  • 我们正在使用Kafka流的会话窗口来聚合相关事件的到达。除了聚合之外,我们还使用API指定窗口的保留时间。流信息: 会话窗口(非活动时间)为1分钟,传递到的保留时间为2分钟。我们使用定制的来映射事件的时间。 示例: 事件:e1;事件时间:上午10:00:00;到达时间:下午2点(同一天) 事件:e2;事件时间:上午10:00:30;到达时间:下午2:10(同一天) 第二个事件的到达时间是e1到达后

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

  • 我很难让apache beam管道触发基于事件时间的触发器,但似乎能够随着处理时间触发窗口触发。 我的管道相当基本: > 我提取二级时间戳 我打开数据窗口进行处理 我按秒对数据进行分组,以便以后按秒对流数据进行分类。 我最终在分类的秒数上使用滑动窗口,有条件地每秒向pubsub发出两条消息中的一条。 我的问题似乎在步骤3中。 我试图在第3阶段使用与第5阶段相同的窗口策略,在分类秒数上运行滑动平均计

  • 我正在运行一个简单的示例来测试基于EventTime的Windows。我能够生成带有处理时间的输出,但当我使用EventTime时,没有输出。请帮助我明白我做错了什么。