Прочитать много файлов из Kafka Connect FileStreamSourceTask

#apache-kafka #apache-kafka-connect

#apache-kafka #apache-kafka-connect

Вопрос:

Я читаю 1 файл журнала в Kafka и создаю тему. Это успешно. Чтобы прочитать этот файл, я редактирую файл config/connect-file-source.properties для этой цели и в соответствии с шагом 7 Kafka Quickstart (http://kafka.apache.org/quickstart#quickstart_kafkaconnect ).

Но теперь я хотел бы прочитать много файлов. В файле config/connect-file-source.properties я отредактировал переменный file с шаблоном, например: file=/etc/logs/archive.log*, потому что я хочу прочитать все файлы журналов каталога с шаблоном archive*.log . Но эта строка не работает.

Какая наилучшая форма для реализации чтения файлов с шаблоном, используя файл config/connect-file-source.properties ?

Ответ №1:

В config/connect-file-source.properties ,

исходный класс есть FileStreamSource , и он использует класс задачи как FileStreamSourceTask .

Он считывает файл с помощью FileInputStream , поэтому он не может открыть несколько файлов одновременно. (путем передачи имени каталога или шаблона регулярных выражений ..)

Вы должны реализовать свой собственный Source SourceTask класс amp; или использовать существующий, который поддерживает эту функцию, такую как kafka-connect-spooldir

Комментарии:

1. Спасибо @Geunho за ваш ответ.

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

3. Другой альтернативный соединитель для потоковой передачи большого количества файлов в kafka: github.com/streamthoughts/kafka-connect-file-pulse