2017-01-23 5 views
3

Будет полезно, если кто-то дать USECASE пример, чтобы объяснить разницу между каждым из водяного знака API с Apache FLiNK приведены нижеWatermarks в Apache Flink

  • Периодические водяные знаки - AssignerWithPeriodicWatermarks [T]
  • Punctuated Watermarks - AssignerWithPunctuatedWatermarks [T]

ответ

4

Основное различие между двумя типами водяных знаков заключается в том, как/когда вызывается метод getWatermark.

периодический водяной знак

С периодическими водяными знаками, Flink вызывает getCurrentWatermark() на регулярные промежутки времени, независимо от потока событий. Этот интервал определяется с использованием

ExecutionConfig.setAutoWatermarkInterval(millis) 

Используйте этот класс, когда ваши водяные знаки зависят (даже частично) от времени обработки, или когда требуется, водяные знаки, издаваемого, даже если нет событий/элементов не было получено некоторое время.

перемежается водяные знаки

С перемежается водяных знаков, Flink называет checkAndGetWatermark()на каждом новом событии, то есть сразу же после вызова assignWatermark(). Фактический водяной знак испускается только в том случае, если checkAndGetWatermark возвращает ненулевое значение, которое больше, чем последний водяной знак.

Это означает, что если вы не получили какой-либо новый элемент какое-то время, водяной знак не может быть выброшен.

Используйте этот класс, если определенные специальные элементы действуют как маркеры, которые означают ход событий, и когда вы хотите выделять водяные знаки специально для определенных событий. Например, в вашем входящем потоке могут быть флаги, обозначающие конец последовательности.