#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