Как выполнить изящное отключение трубопровода Apache Beam

#apache-spark #apache-beam #apache-beam-io #apache-beam-kafkaio

Вопрос:

У меня есть конвейер Apache Beam, работающий на Spark. Конвейер считывает данные из темы Кафки (KafkaIO) и записывает их в файлы (FileIO). Время от времени мне нужно останавливать конвейер и обновлять некоторые внешние параметры. Это приводит к некоторой потере данных. Есть ли способ сделать изящную остановку трубопровода? Своего рода утечка, чтобы избежать потери данных.

Я видел этого мистера в github (https://github.com/apache/beam/pull/12287/files) но я, кажется, не могу понять, как им пользоваться. Любая помощь будет признательна

Комментарии:

1. DataflowRunner поддерживает слив: cloud.google.com/dataflow/docs/guides/stopping-a-pipeline#drain . Не уверен насчет SparkRunner, не смог найти документ об этом. Глядя на Truncating during drain в beam.apache.org/documentation/programming-guide , в нем говорится: Runners which support draining pipelines need the ability to drain SDFs; otherwise, the pipeline may never stop. Вы можете спросить об этом у users@beam.apache.org.