В одной из предыдущих статей Работа с базами данных в Apache NiFi мы описывали способ настройки взаимодействия Apache NiFi с базой данных. В качестве примера была рассмотрена операция добавления данных в БД посредством Apache NiFi. В данной статье на простейшем примере будет рассмотрен один из простейших способов выгрузки данных из базы. Будут использованы те же самые настройки подключения к БД, что использовались в вышеупомянутой статье.
Задача. Из таблицы Check выгрузить все значения поля kafka_message и сохранить в файл.
- Добавим процессор ExecuteSQL. В настройках процессора укажем подключение к базе данных и запрос, который будет использоваться для выбора данных:
SELECT kafka_message FROM public.»check» - Для того, чтобы запрос отработал один раз зададим настройки расписания, указав что процессор должен отработать только один раз, в конкретный момент времени.
Использование расписания работы процессоров будет рассмотрено в отдельной статье, так как тема достаточно объемная. - Добавим процессор ConvertAvroToJSON. Так как процессор ExecuteSQL передает данные в формате Avro, то часто возникает необходимость его преобразования в один из общеприянтых форматов — XML, JSON и т.д. В нашем случае мы сконвертируем в JSON. Более побродно с форматом Avro можно ознакомитсья на официальном сайте Apache Avro.
- Добавим процессор PutFile и укажем папку, в которую будет сохраняться JSON-файл
- Соединим процессоры между собой, чтобы получить завершенную схему.
- Укажем в расписании процессора ExecuteSQL время запуска текущее плюс одну минуту. То есть, если сейчас время 13:14, то указываем время запуска 13:15. Запустим все процессоры.
- Убедимся, что процессор ExecuteSQL отработал и откроем папку, указанную в процессоре PutFile. Созданный файл содержит все, выгруженные из базы данных, значения.
Формат JSON можно преобразовать в другие форматы с помощью скриптов. В одной из следующих статей будут рассмотрены такие примеры.
При копировании материалов ссылка на сайт обязательна. Вопросы, замечания, предложения и комментарии к статьям можно направлять на адрес: info@datanetworks.ru