【发布时间】:2017-01-23 14:55:33
【问题描述】:
如果有人给出用例示例来解释每个 Watermark API 与下面给出的 Apache flink 之间的区别,将会很有帮助
- 周期性水印 -
AssignerWithPeriodicWatermarks[T] - 标点水印 -
AssignerWithPunctuatedWatermarks[T]
【问题讨论】:
标签: apache-flink flink-streaming
如果有人给出用例示例来解释每个 Watermark API 与下面给出的 Apache flink 之间的区别,将会很有帮助
AssignerWithPeriodicWatermarks[T]
AssignerWithPunctuatedWatermarks[T]
【问题讨论】:
标签: apache-flink flink-streaming
这两种水印的主要区别在于如何/何时调用getWatermark 方法。
周期性水印
使用周期性水印,Flink 以定期间隔调用getCurrentWatermark(),独立于事件流。这个间隔是用
ExecutionConfig.setAutoWatermarkInterval(millis)
当您的水印(甚至部分)依赖于处理时间时,或者当您需要发出水印(即使一段时间内没有收到事件/元素)时,请使用此类。
标点水印
使用标点水印,Flink 在每个新事件上调用checkAndGetWatermark(),即在调用assignWatermark()之后。只有当checkAndGetWatermark 返回大于最后一个水印的非空值时,才会发出实际水印。
这意味着如果您有一段时间没有收到任何新元素,则不会发出水印。
如果某些特殊元素充当表示事件时间进度的标记,并且当您想在某些事件中专门发出水印时,请使用此类。例如,您可以在传入的流中使用标志来标记序列的结束。
【讨论】: