Коннектор HTTP Sink распространяется по лицензии Confluent Enterprise License.
Шаги быстрого старта
1
Соберите сведения о подключении
Чтобы подключиться к ClickHouse по HTTP(S), вам понадобится следующая информация:
Выберите HTTPS. Сведения о подключении будут показаны в примере команды 
Если вы используете самоуправляемый ClickHouse, сведения о подключении задаёт ваш администратор ClickHouse.
Сведения о подключении для вашего сервиса ClickHouse Cloud доступны в консоли ClickHouse Cloud.
Выберите сервис и нажмите Connect:

curl.
2
Запустите Kafka Connect и коннектор HTTP Sink
У вас есть два варианта:
-
Самоуправляемый: Загрузите пакет Confluent и установите его локально. Следуйте инструкциям по установке коннектора, описанным здесь.
Если вы используете метод установки
confluent-hub, ваши локальные файлы конфигурации будут обновлены. - Confluent Cloud: Для тех, кто использует Confluent Cloud для хостинга Kafka, доступна полностью управляемая версия HTTP Sink. Для этого требуется, чтобы ваша среда ClickHouse была доступна из Confluent Cloud.
В следующих примерах используется Confluent Cloud.
3
Создайте целевую таблицу в ClickHouse
Перед проверкой подключения давайте сначала создадим тестовую таблицу в ClickHouse Cloud; эта таблица будет получать данные из Kafka:
4
Настройка HTTP Sink
Создайте Kafka топик и экземпляр коннектора HTTP Sink:
Настройте коннектор HTTP Sink:
Настройте коннектор HTTP Sink:
- Укажите имя созданного топика
- Аутентификация
HTTP Url- URL ClickHouse Cloud с указанным запросомINSERT<protocol>://<clickhouse_host>:<clickhouse_port>?query=INSERT%20INTO%20<database>.<table>%20FORMAT%20JSONEachRow. Примечание: запрос должен быть URL-кодирован.Endpoint Authentication type- BASICAuth username- имя пользователя ClickHouseAuth password- пароль ClickHouse
В этом HTTP Url легко допустить ошибку. Убедитесь, что экранирование выполнено корректно, чтобы избежать проблем.
- Конфигурация
Input Kafka record value formatЗависит от исходных данных, но в большинстве случаев это JSON или Avro. В следующих настройках мы исходим изJSON.- В разделе
advanced configurations:HTTP Request Method- установите значение POSTRequest Body Format- jsonBatch batch size- согласно рекомендациям ClickHouse, установите значение не менее 1000.Batch json as array- trueRetry on HTTP codes- 400-500, но при необходимости скорректируйте; например, это может измениться, если перед ClickHouse используется HTTP proxy.Maximum Reties- значение по умолчанию (10) подходит, но при необходимости вы можете увеличить его для более надёжных повторных попыток.
5
Проверка подключения
Создайте сообщение в топике, настроенном для вашего HTTP Sink
и убедитесь, что созданное сообщение было записано в ваш экземпляр ClickHouse.
и убедитесь, что созданное сообщение было записано в ваш экземпляр ClickHouse.
Устранение неполадок
HTTP Sink не выполняет батчинг сообщений
Коннектор HTTP Sink не выполняет батчинг запросов для сообщений с разными значениями заголовков Kafka.
- Убедитесь, что у ваших записей Kafka одинаковый ключ.
- При добавлении параметров в URL HTTP API для каждой записи может формироваться уникальный URL. По этой причине батчинг отключается при использовании дополнительных параметров URL.
400 Некорректный запрос
CANNOT_PARSE_QUOTED_STRING
String в HTTP Sink возникает следующая ошибка:
input_format_json_read_objects_as_strings=1 в URL в виде закодированной строки SETTINGS%20input_format_json_read_objects_as_strings%3D1
Загрузите набор данных GitHub (необязательно)
1
Подготовьте конфигурацию
Следуйте этим инструкциям по настройке Connect в соответствии с типом вашей установки, учитывая различия между автономным и распределённым кластером. Если вы используете Confluent Cloud, вам нужен распределённый вариант.Самый важный параметр — Следующие дополнительные параметры относятся к использению коннектора HTTP Sink с ClickHouse. Полный список параметров можно найти здесь:
http.api.url. HTTP-интерфейс ClickHouse требует передавать оператор INSERT как параметр URL. Он должен включать формат (JSONEachRow в данном случае) и целевую базу данных. Формат должен соответствовать данным Kafka, которые будут преобразованы в строку в HTTP-полезной нагрузке. Эти параметры должны быть URL-кодированы. Ниже показан пример такого формата для набора данных Github (при условии, что вы запускаете ClickHouse локально):request.method- Установите значение POSTretry.on.status.codes- Установите 400-500, чтобы повторять попытки при любых кодах ошибок. Скорректируйте значение с учетом ожидаемых ошибок в данных.request.body.format- В большинстве случаев это будет JSON.auth.type- Установите значение BASIC, если для ClickHouse используется BASIC-аутентификация. Другие совместимые с ClickHouse механизмы аутентификации в настоящее время не поддерживаются.ssl.enabled- установите значение true, если используете SSL.connection.user- имя пользователя ClickHouse.connection.password- пароль ClickHouse.batch.max.size- Количество строк, отправляемых в одном батче. Убедитесь, что здесь задано достаточно большое значение. Согласно рекомендациям ClickHouse, значение 1000 следует считать минимальным.tasks.max- Коннектор HTTP Sink поддерживает запуск одной или нескольких задач. Это можно использовать для повышения производительности. Наряду с размером батча это основной способ повысить производительность.key.converter- задайте в соответствии с типами ваших ключей.value.converter- задайте в зависимости от типа данных в вашем топике. Для этих данных схема не требуется. Формат здесь должен соответствовать FORMAT, указанному в параметреhttp.api.url. Проще всего использовать JSON и конвертер org.apache.kafka.connect.json.JsonConverter. Также можно обрабатывать значение как строку с помощью конвертера org.apache.kafka.connect.storage.StringConverter, хотя в этом случае пользователю потребуется извлекать значение в операторе вставки с помощью функций. Формат Avro также поддерживается в ClickHouse при использовании конвертера io.confluent.connect.avro.AvroConverter.
2
Создайте таблицу в ClickHouse
Убедитесь, что таблица создана. Ниже приведён пример минимального набора данных GitHub с использованием стандартного движка MergeTree.
3
Добавьте данные в Kafka
Запишите сообщения в Kafka. Ниже мы используем kcat, чтобы отправить 10 тыс. сообщений.Простой запрос к целевой таблице “Github” должен подтвердить вставку данных.