Apache Flink - Сквозное тестирование, как отключить источник ввода

Некоторое время я использовал apache flink для пакетной обработки, но теперь мы хотим преобразовать это пакетное задание в потоковое задание. Проблема, с которой я сталкиваюсь, заключается в том, как выполнять сквозные тесты.

Как это работало при пакетном задании

При использовании пакетной обработки мы создавали сквозные тесты с использованием огурца.

  • Мы бы заполняли таблицу hbase, которую читаем из
  • Запустить пакетное задание
  • Подождите, пока он закончится
  • проверить результат

Проблема с потоковой передачей

Мы хотели бы сделать что-то подобное с заданием потоковой передачи, за исключением того, что задание потоковой передачи на самом деле не завершается.

So:

  • заполнить очередь сообщений, которую мы читаем из
  • Запустите задание потоковой передачи.
  • Подождите, пока он закончится (как?)
  • Проверить результат

Мы могли бы просто подождать 5 секунд после каждого теста и предположить, что все было обработано, но это сильно замедлит все.

Вопрос:

Каковы способы или передовые практики для выполнения сквозных тестов в потоковом задании flink без принудительного завершения задания flink через x секунд


person Richard Deurwaarder    schedule 09.07.2018    source источник


Ответы (1)


Большинство источников Flink DataStream, если они читают из конечного входа, будут вводить водяной знак со значением LONG.MAX_VALUE, когда они достигнут конца, после чего задание будет прекращено.

Упражнения по обучению Flink иллюстрируют один подход к проведению сквозного тестирования заданий Flink. Я предлагаю клонировать репозиторий github и посмотреть, как настраиваются тесты. Они используют настраиваемый источник и приемник и перенаправить ввод и вывод для тестирования.

Эта тема также немного обсуждается в документации .

person David Anderson    schedule 10.07.2018