【问题标题】:What is the difference between periodic and punctuated watermarks in Apache Flink?Apache Flink 中的周期性水印和标点水印有什么区别?
【发布时间】:2017-01-23 14:55:33
【问题描述】:

如果有人给出用例示例来解释每个 Watermark API 与下面给出的 Apache flink 之间的区别,将会很有帮助

  • 周期性水印 - AssignerWithPeriodicWatermarks[T]
  • 标点水印 - AssignerWithPunctuatedWatermarks[T]

【问题讨论】:

    标签: apache-flink flink-streaming


    【解决方案1】:

    这两种水印的主要区别在于如何/何时调用getWatermark 方法。

    周期性水印

    使用周期性水印,Flink 以定期间隔调用getCurrentWatermark(),独立于事件流。这个间隔是用

    定义的
    ExecutionConfig.setAutoWatermarkInterval(millis)
    

    当您的水印(甚至部分)依赖于处理时间时,或者当您需要发出水印(即使一段时间内没有收到事件/元素)时,请使用此类。

    标点水印

    使用标点水印,Flink 在每个新事件上调用checkAndGetWatermark(),即在调用assignWatermark()之后。只有当checkAndGetWatermark 返回大于最后一个水印的非空值时,才会发出实际水印。

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

    如果某些特殊元素充当表示事件时间进度的标记,并且当您想在某些事件中专门发出水印时,请使用此类。例如,您可以在传入的流中使用标志来标记序列的结束。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多