Исключительная задача потоковой передачи Spark, когда клиент kafka отправляет сообщение асинхронно - PullRequest
0 голосов
/ 28 августа 2018

Я создаю приложение Stream Streaming, читаю входное сообщение из темы kafka, сообщение преобразования и выводю сообщение с результатом в другую тему kafka. Теперь я запутался, как предотвратить потерю данных при перезапуске приложения, включая чтение и вывод kafka. Установка конфигурации spark "spark.streaming.stopGracefullyOnShutdow" true может помочь?

1 Ответ

0 голосов
/ 28 августа 2018

Вы можете настроить Spark для создания контрольной точки для HDFS и сохранять смещения Kafka в Zookeeper (или Hbase, или настраивать в другом месте для быстрого, отказоустойчивого поиска)

Хотя, если вы обрабатываете некоторые записи и записываете результаты до того, как сможете зафиксировать смещения, вы в конечном итоге обработаете эти записи при перезапуске. Утверждается, что Spark может делать с Kafka ровно один раз, но это только при правильном управлении смещением, насколько мне известно, например, установите для enable.auto.commit значение false в приоритетах Kafka, а затем выполняйте коммит только после вас ' мы обработали и записали данные в место назначения

Если вы просто перемещаете данные между темами Kafka, Kafka Streams - это встроенная библиотека Kafka, которая не требует YARN или планировщика кластера

...