中间件速查手册
大数据计算水位线

Watermark 是什么?

告诉系统“时间 T 之前的数据基本到齐了”,用来处理乱序

类比:考试收卷,到点后默认没人再交,晚交的单独处理

为什么需要它

网络和上游会让事件乱序到达。窗口不能无限等下去,否则结果永远出不来;也不能一有数据就算,否则会漏掉迟到的。Watermark 是一个时间断言:水位线之前的数据,系统认为基本到齐了。

怎么产生

常见策略是 `forBoundedOutOfOrderness(Duration.ofSeconds(5))`:取当前见过的最大事件时间减去 5 秒作为水位线。允许多乱序,就调大这个值,代价是延迟变高。

多输入的情况下,算子取所有输入水位线的最小值往下传——必须等最慢的那条流,否则会算错。

迟到数据怎么办

水位线越过窗口结束时间后,窗口触发计算并销毁。之后再来这条窗口的数据就是迟到数据,默认丢弃;可以配置 allowedLateness 让它再等一会儿,或者用 sideOutput 把迟到数据单独收集起来补算。

它出现在这些中间件里

相关问题

相关概念