Apache flink 关于事件时间处理,Flink中的水印是什么?为什么需要它。?

Apache flink 关于事件时间处理,Flink中的水印是什么?为什么需要它。?,apache-flink,flink-streaming,Apache Flink,Flink Streaming,关于事件时间处理,Flink中的水印是什么?为什么需要它。? 为什么在所有使用事件时间的情况下都需要它。在所有情况下,我的意思是如果我不做窗户操作 那为什么我们还需要一个水位线呢。 我来自星火背景。在spark中,只有在对传入事件使用windows时才需要水印 我读过几篇文章,在我看来,水印和windows似乎是一样的。如果有差异,请解释并指出 贴上你的回复,我读了一些。下面是一个更具体的查询。 主要问题:-当我们接受迟到时,为什么我们需要无序 给出以下示例: 假设您有一个BoundedAuto

关于事件时间处理,Flink中的水印是什么?为什么需要它。? 为什么在所有使用事件时间的情况下都需要它。在所有情况下,我的意思是如果我不做窗户操作 那为什么我们还需要一个水位线呢。 我来自星火背景。在spark中,只有在对传入事件使用windows时才需要水印

我读过几篇文章,在我看来,水印和windows似乎是一样的。如果有差异,请解释并指出

贴上你的回复,我读了一些。下面是一个更具体的查询。
主要问题:-当我们接受迟到时,为什么我们需要无序

给出以下示例:
假设您有一个BoundedAutofordernessTimestampExtractor,它有一个2分钟的绑定和一个10分钟的翻滚窗口,从12:00开始,到12:10结束:
12:01,A
12:04,B
WM,12:02//12:04-2分钟
12:02,C
12:08,D
12:14,E
WM,12:12
12:16,F
WM,12:14//12:16-2分钟
12:09,G

在上述示例中,[12:02,C]记录不会被删除,而是包含在12:00-12:10窗口中,并在以后进行评估。-因此水印也可以是事件时间戳

只有在配置了5分钟的可接受延迟时,记录[12:09,G]才会包含在12:00-12:10窗口中。这会处理延迟和无序事件

那么现在,除了我前面的问题之外,还有什么必要将无序选项绑定为某个值(0除外)的ErnessTimestampExtractor,而不是事件时间戳istelf?

什么是无序可以实现而允许延迟不能实现的,在什么情况下它可以实现?

水印和窗口密切相关,但它们是非常不同的概念


对于任何类型的基于事件的聚合,都需要使用这些函数来切断延迟事件。Windows只能在收到适当的水印时关闭,也就是在发布聚合结果时关闭

如果没有无序事件,可以将水印设置为与输入事件的时间戳等效。但这通常是一种奢侈


编辑以解决评论中的问题

将水印持续时间保持为窗口持续时间是一条经验法则,因为这样做只会计算并发出结果

不,持续时间是独立的,但将给定事件的滞后时间相加

您的水印持续时间取决于您的数据以及应用程序的延迟时间。假设大多数事件都是有序的,10%的事件延迟到1秒,另外5%的事件延迟到10秒,1%的事件延迟到1小时

如果将水印持续时间设置为0,则16%的数据点将被丢弃,但Flink不会收到额外的延迟。如果您的水印落后于事件1s,则您将丢失6%的数据,但结果的滞后时间将增加1s。如果要保留所有数据,Flink需要在每次聚合上等待1小时,直到Flink确定没有数据丢失

那么触发器的作用是什么呢?滑动窗口如何与水印和触发器协调。你能解释一下他们是如何合作的吗

比方说,您有一个1分钟的窗口和5秒的水印延迟。只有在确定已看到所有相关数据时,才会触发窗口。在这种情况下,它需要等待1分钟5秒才能触发,这样窗口的最后一个事件肯定已经到达


默认情况下,将丢弃稍后作为水印的Btw事件

水印和窗口密切相关,但它们是非常不同的概念


对于任何类型的基于事件的聚合,都需要使用这些函数来切断延迟事件。Windows只能在收到适当的水印时关闭,也就是在发布聚合结果时关闭

如果没有无序事件,可以将水印设置为与输入事件的时间戳等效。但这通常是一种奢侈


编辑以解决评论中的问题

将水印持续时间保持为窗口持续时间是一条经验法则,因为这样做只会计算并发出结果

不,持续时间是独立的,但将给定事件的滞后时间相加

您的水印持续时间取决于您的数据以及应用程序的延迟时间。假设大多数事件都是有序的,10%的事件延迟到1秒,另外5%的事件延迟到10秒,1%的事件延迟到1小时

如果将水印持续时间设置为0,则16%的数据点将被丢弃,但Flink不会收到额外的延迟。如果您的水印落后于事件1s,则您将丢失6%的数据,但结果的滞后时间将增加1s。如果要保留所有数据,Flink需要在每次聚合上等待1小时,直到Flink确定没有数据丢失

那么触发器的作用是什么呢?滑动窗口如何与水印和触发器协调。你能解释一下他们是如何合作的吗

比方说,您有一个1分钟的窗口和5秒的水印延迟。只有在确定已看到所有相关数据时,才会触发窗口。在这种情况下,它需要等待1分钟5秒才能触发,这样窗口的最后一个事件肯定已经到达


默认情况下,将丢弃稍后作为水印的Btw事件

这是以前提出过的问题。有关不涉及windows的示例,请参见。这是以前提出的问题。有关不涉及windows的示例,请参阅。“windows只能在接收到适当的水印时关闭,而这是在发布聚合结果时关闭。”-根据此语句,将水印持续时间保持为窗口持续时间是一条经验法则,因为仅这样做,结果才会被计算和发出。那么触发器的作用是什么呢?滑动窗口如何与水印和触发器协调。你能解释一下吗