Kafka: параллельная пакетная обработка - PullRequest
0 голосов
/ 08 мая 2018

Я хотел бы использовать Kafka для выполнения ограниченной пакетной обработки , когда программа будет знать, когда она обрабатывает последнюю запись.

Пакетная:

  • Чтение плоского файла
  • Отправить каждую строку как сообщение для Кафки

Слушатель Кафки:

  • Потребляет сообщение от Кафки
  • Вставить запись в базу данных
  • Если это последняя запись, отметьте пакетное задание как выполненное в базе данных.

Один из способов, вероятно, состоит в том, чтобы использовать один раздел Kafka, предполагая, что FIFO (First In First Out) гарантированно, и заставить пакетную программу отправить флаг isLastRecord .

Однако это означает, что обработка будет ограничена однопоточным (однопользовательским).

Вопрос

Есть ли способ достичь этого с помощью параллельной обработки, используя несколько разделов Kafka?

1 Ответ

0 голосов
/ 08 мая 2018

Если вам нужны порядковые гарантии для каждого файла, вы ограничены одним разделом.

Если у вас есть несколько файлов, вы можете использовать разные разделы для разных файлов.

Если каждая строка в файле представляет собой вставку в базу данных, мне интересно, если вам нужна гарантия заказа в первую очередь, или вы можете вставить все записи / строки в любом порядке?

Более фундаментальный вопрос: зачем вам сначала помещать данные в Kafka? Почему бы не прочитать файл и сразу вставить?

...