Проблема неактивного раздела коннектора источника Apache Beam Kafka с «CustomTimeStampPolicyWithLimitedDelay»

Источник - кафка для нашего лучевого трубопровода. Коннектор ввода-вывода kafka в Apache Beam поддерживает перемещение водяного знака (в случае flink runner), даже если какой-либо раздел неактивен. Приложения, которые хотели бы обрабатывать пакеты на основе метки времени пакета, включенного в полезную нагрузку, хотели бы использовать «CustomTimestampPolicyWithLimitedDelay». Мы используем ФИКСИРОВАННЫЕ ОКНА в течение минуты для агрегирования, которое зависит от понятия времени. Поэтому, если время не идет должным образом, функция агрегирования не вызывается, и данные теряются.

У этого API есть проблемы с функциональностью. Итак, когда приложение инициализировано, давайте, например, используем тему a в качестве источника с тремя разделами. Эти шаги были предприняты для воспроизведения проблемы:

  1. Закачка данных только в один раздел с частотой с любыми x секундами, а функция агрегирования наблюдения не вызывается даже через несколько минут.
  2. Теперь перекачивайте данные во все разделы, и, как и ожидалось, в конце минуты вызывается функция агрегирования.
  3. Теперь перекачивайте данные только в один раздел, и это тоже не раньше конца минуты непосредственно перед этим, чтобы мы могли сгенерировать сценарий бездействующего раздела и наблюдать, работает ли он, как ожидалось, СЕЙЧАС.

Итак, своего рода сводка заключается в том, что существует проблема инициализации с этим api, когда время не увеличивается, но после шага 2 оно стабилизируется и работает должным образом.

Это легко воспроизвести, и для исправления потребуется Apache Beam.

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

0 ответов

Другие вопросы по тегам