Интеграция Spark Kafka с использованием приемника с WAL

Я читал ниже блог в Databricks

https://databricks.com/blog/2015/03/30/improvements-to-kafka-integration-of-spark-streaming.html

Объясняя процесс, как работает интеграция spark kafka с использованием приемника с WAl, он говорит

1. Данные Кафки непрерывно принимаются приемниками Кафки, работающими в рабочих / исполнителях Spark. Для этого использовался потребительский API высокого уровня Kafka.

2. Полученные данные хранятся в памяти Spark для рабочих / исполнителей, а также в WAL (реплицируются на HDFS). Приемник Кафки обновил смещения Кафки для Zookeeper только после того, как данные были сохранены в журнале.

Теперь я сомневаюсь, как высокоуровневый потребитель может обновить смещение в zookeeper, так как высокоуровневый потребитель не обрабатывает смещение, оно обрабатывается zookeeper. Поэтому, как только мы прочитаем сообщение от kafka, используя zookeeper, zookeeper автоматически обновит смещение.

1 ответ

Поэтому, когда потребитель получает данные из определенной темы в kafka, он несет ответственность за обновление смещений в zookeeper. Поэтому, когда вы используете пользовательский потребитель kafka, он имеет встроенный API-интерфейс kafka ( org.apache.kafka.clients.consumer.* Делает это), который обновит смещения, как только вы получите данные из этой конкретной темы.

В случае такого подхода, основанного на приемнике, в spark он использует API высокого уровня Kafka для обновления смещений в zookeeper.

Другие вопросы по тегам