Добавить точку сохранения в Datastream

У меня есть источник kafka, из которого мое приложение flink считывает данные и обрабатывает их, я хочу добавить механизм точки сохранения flink, чтобы возобновить процесс с последнего места, где он был оставлен. Вместо добавления точки сохранения в источник kafka я хочу, чтобы мое приложение поддерживало состояние последнего обработанного потока, чтобы он не повторно обрабатывал мои данные, которые частично обрабатываются моим приложением.

Я добавил точку сохранения в источник kafka, который возобновляет поток kafka, но вместо этого я хочу возобновить поток обработанных данных

 DataStream<String> streamOfStrings = env.addSource(new FlinkKafkaConsumer010<>(topicname));

Мой строковый поток далее передается другому процессу, который преобразуется в поток данных объекта. Я хочу, чтобы состояние обрабатываемого потока сохранялось, но не поток кафка. Есть ли способ прикрепить точку сохранения к потоку данных

 DataStream<Object> streamOfObject = App.convertToObject(streamOfStrings);

person Ahmad Qureshi    schedule 17.01.2019    source источник
comment
Принимаете ли вы семантику хотя бы один раз для convertToObject?   -  person Jiayi Liao    schedule 17.01.2019


Ответы (1)


Несколько уточнений ...

  1. Даже если вы поддерживаете нижележащее состояние, источник Kafka должен поддерживать некоторое состояние, чтобы знать, какую часть темы он использовал; при перезапуске с контрольной точки или точки сохранения он должен воспроизвести любые данные со времени последних данных, которые перешли в сохраненное состояние, и текущих доступных данных.
  2. Любое состояние, которое вы сохраняете, должно иметь некоторую продолжительность (обычно ограничение по времени), чтобы оно не накапливалось неограниченно, верно?

Самый простой подход, который я могу придумать, - это превратить ваш App.convertToObject() метод в правильную функцию, реализующую интерфейс [ListCheckpointed][1]. Вы сохраняете каждый преобразованный объект в список до некоторого предела (см. Пример BufferingSink на той же странице).

person kkrugler    schedule 30.01.2019