flink-watermark 是什么?

1: watermark 是流里的一个特殊的元素,这个不是我说的,看源码的注释:

public final class Watermark extends StreamElement {

然后我们看看StreamElement的注释里:
An element in a data stream. Can be a record or a Watermark.

2:watermark 是要配合我们的窗口来使用的,且我们要使用的时间语义这个时候是事件时间,watermark 通过决定何时关闭窗口来做到我们对乱序数据的处理。它其实就是窗口的边界,一旦它和窗口的关闭的时间一样的时候,窗口就要关闭了,后来的数据就不再属于这个窗口,窗口是左开右闭的。

3:watermark是只增不减的,因为我们的事件时间按道理来说是只会随着时间的流逝逐步的递增,所以和event time 强关联的watermark必然也是逐步递增的。

4:如何处理分布式下的watermark,一说到分布式简单的问题就会变得复杂。

5:如何设定合理的watermark其实狠考验人,常见的处理方式一般可以满足多数不是狠复杂的需求。

上一篇:flink-allowedLateness与watermark的区别


下一篇:flink分区策略