Можно ли сгенерировать водяные знаки для каждого ключа в KeyedStream (Apache Flink)?

Я работаю над реализацией варианта использования, в котором разные физические устройства отправляют события, и из-за проблем с сетью / питанием может возникнуть задержка в получении событий в источнике мигания. Одним из операторов в задании flink является оператор Pattern, и есть определенные шаблоны, которые чувствительны ко времени, поэтому я использую характеристику времени события. Но проблема возникает, когда возникают непредсказуемые задержки событий с определенного устройства (устройств), что приводит к отбрасыванию этих событий (поскольку я не могу определить статическую привязку, чтобы учесть задержку).

Поскольку я использую KeyedStream, привязанный к идентификатору исходного устройства, есть ли способ разрешить каждому экземпляру оператора CEP (по одному на ключ) продвигать свое время на основе времени события в соответствующем разделе потока. Или, другими словами, есть ли способ сгенерировать водяные знаки для каждого раздела в KeyedStream?


person shailesh    schedule 08.11.2017    source источник


Ответы (1)


В настоящее время Flink не поддерживает водяные знаки по ключевым словам. Водяной знак глобальный.

person Till Rohrmann    schedule 10.11.2017
comment
Как вы относитесь к предлагаемому здесь подходу RichFlatMapFunction для достижения этой функциональности? apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/ - person austin_ce; 06.11.2018
comment
Вам придется реализовать это в пользовательском коде, что означает, что пользовательский код генерирует водяные знаки и обрабатывает их. Это, однако, повлечет за собой то, что вы не сможете использовать его, например, со встроенным механизмом управления окнами Flink. Если вам нужно управление окнами с водяным знаком для каждого ключа, вам также придется реализовать механизм управления окнами самостоятельно. - person Till Rohrmann; 09.06.2020