2017-01-23 58 views
3

将是有益的,如果有人给用例的例子来解释每一个水印API与Apache的之间的差弗林克下面给出水印中的Apache弗林克

  • 周期水印 - AssignerWithPeriodicWatermarks [T]
  • 间断水印 - AssignerWithPunctuatedWatermarks [T]

回答

4

两种类型的水印之间的主要区别是如何/何时调用getWatermark方法。

定期水印

随着周期性水印,弗林克在定期间隔调用getCurrentWatermark(),独立的事件流的。该间隔使用

ExecutionConfig.setAutoWatermarkInterval(millis) 

上的处理时间使用这个类当你的水印依赖(甚至部分)定义,或者当你需要的水印,即使没有事件/元素已经收到了,而发射。

间断水印

了间断水印,弗林克调用assignWatermark()后立即调用checkAndGetWatermark()每个新事件,即。仅当checkAndGetWatermark返回大于最后一个水印的非空值时才会发出实际的水印。

这意味着如果您在一段时间内没有收到任何新元素,则不会发出水印。

如果某些特殊元素用作表示事件时间进度的标记,并且您希望在某些事件中专门发出水印,则可以使用此类。例如,您可以在传入流中标记标记序列的结尾。