Пакетная запись от Kafka не соблюдает контрольные точки и записывает дубликаты - PullRequest
0 голосов
/ 07 января 2019

Продолжение моего предыдущего вопроса : Я пишу большой массив данных в пакете из Databricks в Kafka. Это обычно работает нормально сейчас. Тем не менее, иногда возникают ошибки (чаще всего тайм-ауты). Повторная попытка запускается, и обработка начнется снова. Но это, похоже, не соблюдает контрольную точку, что приводит к записи дубликатов в приемник Кафки.

Так должны ли вообще работать контрольные точки в режиме пакетной записи? Или я что-то упустил?

Config:

EH_SASL = 'kafkashaded.org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://myeventhub.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=****";'

dfKafka \
.write  \
.format("kafka") \
.option("kafka.sasl.mechanism", "PLAIN") \
.option("kafka.security.protocol", "SASL_SSL") \
.option("kafka.sasl.jaas.config", EH_SASL) \
.option("kafka.bootstrap.servers", "myeventhub.servicebus.windows.net:9093") \
.option("topic", "mytopic") \
.option("checkpointLocation", "/mnt/telemetry/cp.txt") \
.save()

1 Ответ

0 голосов
/ 08 января 2019

Контрольные точки искры имеют тенденцию к дублированию. Хранение и чтение Offset от Zookeeper может решить эту проблему. Вот ссылка для деталей:

http://aseigneurin.github.io/2016/05/07/spark-kafka-achieving-zero-data-loss.html

Кроме того, в вашем случае контрольные точки вообще не работают или контрольные точки вызывают дубликаты? Выше URL справка для последующего случая.

...