Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Подключение Apache NiFi к ClickHouse

Поддерживается сообществом

Apache NiFi — это ПО с открытым исходным кодом для управления рабочими процессами, предназначенное для автоматизации потоков данных между программными системами. Оно позволяет создавать ETL-конвейеры данных и включает более 300 процессоров данных. В этом пошаговом руководстве показано, как подключить Apache NiFi к ClickHouse в качестве источника и пункта назначения, а также загрузить примерный набор данных.

Подготовьте сведения о подключении

Чтобы подключиться к ClickHouse по HTTP(S), вам понадобится следующая информация:

Параметр(ы) Описание
HOST and PORT Обычно используется порт 8443 при использовании TLS и 8123 без TLS.
DATABASE NAME По умолчанию есть база данных default; используйте имя базы данных, к которой хотите подключиться.
USERNAME and PASSWORD По умолчанию имя пользователя — default. Используйте имя пользователя, подходящее для вашего сценария использования.

Сведения о подключении для вашего сервиса ClickHouse Cloud доступны в консоли ClickHouse Cloud. Выберите сервис и нажмите Connect:

Кнопка подключения сервиса ClickHouse Cloud

Выберите HTTPS. Сведения о подключении будут показаны в примере команды curl.

Сведения о подключении к ClickHouse Cloud по HTTPS

Если вы используете самоуправляемый ClickHouse, сведения о подключении задаёт ваш администратор ClickHouse.

Скачайте и запустите Apache NiFi

Для новой установки скачайте бинарный файл с https://nifi.apache.org/download.html и начните с выполнения команды ./bin/nifi.sh start

Скачайте JDBC-драйвер ClickHouse

  1. Перейдите на страницу релизов JDBC-драйвера ClickHouse на GitHub и найдите последнюю версию JDBC-драйвера
  2. В выбранном релизе нажмите "Show all xx assets" и найдите JAR-файл, содержащий ключевое слово "shaded" или "all", например clickhouse-jdbc-0.5.0-all.jar
  3. Поместите JAR-файл в папку, доступную Apache NiFi, и запишите его абсолютный путь

[object Object]

  1. Чтобы настроить службу контроллера в Apache NiFi, откройте страницу конфигурации потока NiFi, нажав кнопку с шестерёнкой

    Страница конфигурации потока NiFi с выделенной кнопкой с шестерёнкой
  2. Перейдите на вкладку Controller Services и добавьте новую службу контроллера, нажав кнопку + в правом верхнем углу

    Вкладка Controller Services с выделенной кнопкой добавления
  3. Найдите DBCPConnectionPool и нажмите кнопку "Add"

    Диалог выбора службы контроллера с выделенным DBCPConnectionPool
  4. После добавления DBCPConnectionPool по умолчанию будет находиться в состоянии Invalid. Нажмите кнопку с шестерёнкой, чтобы перейти к настройке

    Список Controller Services с недопустимым DBCPConnectionPool и выделенной кнопкой с шестерёнкой
  5. В разделе "Properties" введите следующие значения

Property Value Remark
URL подключения к базе данных jdbchttps://HOSTNAME:8443/default?ssl=truetrue Замените HOSTNAME в URL подключения на нужное значение
Имя класса драйвера базы данных com.clickhouse.jdbc.ClickHouseDriver
Расположение драйвера базы данных /etc/nifi/nifi-X.XX.X/lib/clickhouse-jdbc-0.X.X-patchXX-shaded.jar Абсолютный путь к JAR-файлу драйвера ClickHouse JDBC
Пользователь базы данных default Имя пользователя ClickHouse
Пароль password Пароль ClickHouse
  1. В разделе Settings измените имя службы контроллера на "ClickHouse JDBC" для удобства дальнейшей работы

    Диалог настройки DBCPConnectionPool с заполненными свойствами
  2. Активируйте службу контроллера DBCPConnectionPool, нажав кнопку с молнией, а затем кнопку "Enable"

    Список Controller Services с выделенной кнопкой с молнией

    Диалог подтверждения включения службы контроллера
  3. Проверьте вкладку Controller Services и убедитесь, что служба контроллера включена

    Список Controller Services с включенной службой ClickHouse JDBC

[object Object]

  1. Добавьте процессор ​​ExecuteSQL вместе с соответствующими предшествующими и последующими процессорами

    Холст NiFi с процессором ExecuteSQL в потоке обработки
  2. В разделе "Properties" процессора ​​ExecuteSQL введите следующие значения

    Property Value Remark
    Database Connection Pooling Service ClickHouse JDBC Выберите Controller Service, настроенный для ClickHouse
    SQL select query SELECT * FROM system.metrics Введите здесь свой запрос
  3. Запустите процессор ​​ExecuteSQL

    Конфигурация процессора ExecuteSQL с заполненными свойствами
  4. Чтобы убедиться, что запрос был успешно обработан, проверьте один из FlowFile в выходной очереди

    Диалог со списком очереди, показывающий FlowFile, готовые к проверке
  5. Переключитесь в режим "formatted", чтобы просмотреть результат в выходном FlowFile

    Средство просмотра содержимого FlowFile с результатами запроса в режиме formatted

[object Object]

  1. Чтобы выполнить вставку нескольких строк за одну операцию, сначала нужно объединить несколько записей в одну. Это можно сделать с помощью процессора MergeRecord

  2. В разделе "Properties" процессора MergeRecord введите следующие значения

    Свойство Значение Примечание
    Record Reader JSONTreeReader Выберите подходящее средство чтения записей
    Record Writer JSONReadSetWriter Выберите подходящее средство записи записей
    Minimum Number of Records 1000 Увеличьте это значение, чтобы в одну запись объединялось минимально необходимое число строк. По умолчанию — 1 строка
    Maximum Number of Records 10000 Укажите значение больше, чем "Minimum Number of Records". По умолчанию — 1 000 строк
  3. Чтобы убедиться, что несколько записей объединяются в одну, проверьте вход и выход процессора MergeRecord. Обратите внимание, что на выходе получается массив из нескольких входных записей

    Вход

    Вход процессора MergeRecord, показывающий отдельные записи

    Выход

    Выход процессора MergeRecord, показывающий объединённый массив записей
  4. В разделе "Properties" процессора PutDatabaseRecord введите следующие значения

    Свойство Значение Примечание
    Record Reader JSONTreeReader Выберите подходящее средство чтения записей
    Database Type Generic Оставьте значение по умолчанию
    Statement Type INSERT
    Database Connection Pooling Service ClickHouse JDBC Выберите сервис-контроллер ClickHouse
    Table Name tbl Укажите здесь имя таблицы
    Translate Field Names false Установите значение "false", чтобы имена полей при вставке совпадали с именами столбцов
    Maximum Batch Size 1000 Максимальное количество строк на одну вставку. Это значение не должно быть меньше значения "Minimum Number of Records" в процессоре MergeRecord
  5. Чтобы убедиться, что каждая вставка содержит несколько строк, проверьте, что число строк в таблице увеличивается как минимум на значение "Minimum Number of Records", заданное в MergeRecord.

    Результаты запроса, показывающие количество строк в целевой таблице
  6. Поздравляем — вы успешно загрузили данные в ClickHouse с помощью Apache NiFi!

Navigation