在Flink中,有两个东西提供了相似的行为。两者之间的区别是什么。
当你已经可以通过maxOutOfOrness实现相同的行为时,你为什么要使用AlloweLatness。
如果只使用Allowedlateness,那么就没有等待的意义,因为延迟元素将无序,因此将被删除。
如果您只使用MaxOutOfOrness,那么它会延迟窗口计算,但它可以处理乱序事件。
MaxOutOfOrderness确定流的水印落后于迄今为止观察到的最大时间戳的程度,这反过来决定了任何事件时间计时器何时触发。这些计时器可能属于windows或进程函数。
水印还定义了哪些事件延迟时间戳小于当前水印的事件延迟。
窗口API有一个允许延迟的概念,它决定了窗口状态保留的时间。当水印通过窗口的终点时,将触发事件时间窗口——如果存在一些允许的延迟,则当每个延迟事件到达时,窗口将再次触发,直到允许的延迟过期(此触发行为可以自定义——这是默认设置)。一旦允许的延迟过期,窗口的状态将被清除,然后延迟事件将被丢弃或发送到侧面输出(如果已配置)。
所以,总结一下:
允许延迟仅适用于事件时间窗口,而MaxOutOfOrness适用于水印的所有用途(例如,进程函数)。
同时拥有这两种机制是很有用的,因为您可以拥有在水印定义的自然窗口结尾触发的窗口,并且在延迟事件到达时再次触发更新的结果。
水印的目的是控制延迟和完整性之间的权衡。能够要求以低延迟(即相对较短的MaxOutOfOrness)生成结果,同时适应相当晚的事件是很有用的。
要纠正一件事:如果MaxOutOfOrderness为零,并且存在AllowedLatenness,那么您可能会有很多延迟事件(除非一切正常),但只有当它们的延迟超过允许的延迟时,才会删除它们(通过窗口)。
问题内容: 很快就有两个相等运算符:double equals( )和Triple equals( ),两者之间有什么区别? 问题答案: 简而言之: 操作员检查其实例值是否相等, 操作员检查引用是否指向同一实例, 长答案: 类是引用类型,可能有多个常量和变量在幕后引用类的同一单个实例。类引用保留在运行时堆栈(RTS)中,其实例保留在内存的堆区域中。当您控制平等时, 这意味着它们的实例是否彼此相等。
我编写了一个简单的脚本,它接受任意数量的参数来演示< code>$@和< code>$*之间的区别: 在我做的 CLI 上 这就是打印出来的 因为它们是相同的,这是否意味着等于?还是我遗漏了一点?
问题内容: package main 该代码可以很好地工作。但是,如果按如下所示更改方法,则会导致死循环。区别在于将替换为。为什么? 问题答案: 因为程序包检查要打印的值是否具有方法(或换句话说:是否实现接口),如果是,则将调用它以获取值的表示形式。 软件包doc中对此进行了说明: […]如果操作数实现String()字符串方法,则将调用该方法将对象转换为字符串,然后根据动词的要求对其进行格式化(
我正在通过做微控制器项目来自学C++。我当前的项目是使用一对或Adafruit羽毛分组无线电。无线电数据包的库函数需要一个C样式的字符串(我相信),我理解它是一个char的数组。 我已经设置了一个枚举来反映接收方的各种操作,并希望将该状态发送回发送方。所以我想把枚举变成char的数组。 在搜索将枚举转换为char数组的方法时,最简单的方法(对我来说)是将枚举变量传递给带有switch语句的函数,该
我是Hadoop的新手。我正在浏览专业Hadoop解决方案的书,以获得一些关于Hadoop和生态系统的知识。我想澄清HDFS和HBase之间的主要区别是什么。我理解的方式就像两者都是存储系统。它们的区别只是在访问数据方面。HBase通过非关系型数据库访问数据,HDFS使用计算框架(MapReduce)处理数据。如果是这种情况,为什么我们不能只有一个存储HDFS或HBase。根据需求,他们将插入和插
有人能解释一下 和 我不知道确切的意思。