Создание идемпотентного стока ES ForEachWriter со структурированной потоковой передачей в spark

У меня та же ситуация, что описана в Структурированная пересылка Spark из kafka - последнее сообщение обрабатывается снова после возобновления с контрольной точки. Когда я перезапускаю свое задание искры после сбоя, последнее сообщение снова обрабатывается. Один из ответов предполагает, что приемник должен быть идемпотентным. Я не уверен, что хорошо понимаю это.

Прямо сейчас я пишу в приемник ES, и 3 метода реализованы следующим образом:

  1. открытый метод возвращает истину
  2. метод обработки делает Http-публикацию в ES
  3. метод close закрывает соединение

Я хотел бы знать, как сделать идемпотентный приемник ES, а также как использовать 2 параметра partitionId и version в методе open, чтобы вернуть false, если данные уже были обработаны.

Заранее спасибо.


person vkr    schedule 20.07.2017    source источник
comment
Вы прочитали принятый ответ в ссылке, которой вы поделились?   -  person eliasah    schedule 20.07.2017
comment
Я думаю, что ответ был обновлен через пару часов после того, как я разместил вопрос. Кажется, он работает со Spark версии 2.2.0.   -  person vkr    schedule 20.07.2017
comment
Однако я думаю, что вам все еще нужно ответить на вопрос, как сделать так, чтобы метод process выполнял публикацию Http в ES идемпотентно.   -  person Jacek Laskowski    schedule 20.07.2017