Дублирующие записи коннектора снежинки - PullRequest
0 голосов
/ 03 августа 2020

Согласно docs

Both Kafka and the Kafka connector are fault-tolerant. 
Messages are neither duplicated nor silently dropped. 
Messages are delivered exactly once, or an error message will be generated

у нас есть в SF 2 записи, которые имеют одинаковые RECORD_METADATA:

{
  "CreateTime": 1596445576884,
  "key": "c�f4��H�h\u000bQ1`��\u0005*�X_a�q.",
  "offset": 319944,
  "partition": 20,
  "topic": "answers.v6.dwh-interaction-event"
}

Наш ключ topi c запись Protobuf, но я полагаю, что это не должно быть проблемой.

1 Ответ

1 голос
/ 03 августа 2020

Если бы повторяющиеся сообщения пришли из topi c, разве у нас не было бы другой пары смещения раздела в записи метаданных?

Да, если вы создали дважды, сообщения будет иметь разные смещения.

Ровно один раз - это сложная вершина c, и реализация одноразового потребления требует c процесса, указанного в месте назначения. В этом блоге описаны два режима сбоя, которые необходимо обработать ровно один раз, чтобы они были успешно реализованы.

В частности:

  • A - Запись в место назначения не удалась. В этом случае SnowflakeSink, коннектор kafka, должен сообщить kafka connect об ошибке записи в место назначения. Это сложнее, чем кажется.
  • B - Применить kafka не удается. В этом случае SnowflakeSink получает запись, которую она уже обработала. Поэтому ему необходимо откатить транзакцию, чтобы строка не была вставлена ​​со стороны снежинки, или, если, скажем, была включена автоматическая фиксация, ему необходимо проверить место назначения, чтобы убедиться, что запись еще не существует.

Я сделал лишь беглый обзор разъема, но на основе этого комментария Я думаю, что A обрабатывается в раковине.

Это можно было бы обработать в другом месте, но для обработки B я можно было бы ожидать, что переменная экземпляра processingOffset будет заполнена при запуске наивысшим смещением, найденным в месте назначения.

Обычно, даже если существуют гарантии, я думаю, что лучше спланировать дублирование. Как предлагает @MikeWalton, можно также создавать дубликаты на стороне производителя, а Snowflake предоставляет надежные инструменты для объединения таблиц.

...