Skip to main content
Коннектор HTTP Sink не зависит от типа данных, поэтому ему не требуется схема Kafka; кроме того, он поддерживает специфичные для ClickHouse типы данных, такие как Map и Array. За эту дополнительную гибкость приходится платить небольшим усложнением конфигурации. Ниже мы опишем простую установку: получение сообщений из одного топика Kafka и вставку строк в таблицу ClickHouse.
Коннектор HTTP Sink распространяется по лицензии Confluent Enterprise License.

Шаги быстрого старта

1

Соберите сведения о подключении

Чтобы подключиться к ClickHouse по HTTP(S), вам понадобится следующая информация:Сведения о подключении для вашего сервиса ClickHouse Cloud доступны в консоли ClickHouse Cloud. Выберите сервис и нажмите Connect:
Кнопка подключения сервиса ClickHouse Cloud
Выберите HTTPS. Сведения о подключении будут показаны в примере команды curl.
Сведения о подключении к ClickHouse Cloud по HTTPS
Если вы используете самоуправляемый ClickHouse, сведения о подключении задаёт ваш администратор ClickHouse.
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 Url - URL ClickHouse Cloud с указанным запросом INSERT <protocol>://<clickhouse_host>:<clickhouse_port>?query=INSERT%20INTO%20<database>.<table>%20FORMAT%20JSONEachRow. Примечание: запрос должен быть URL-кодирован.
    • Endpoint Authentication type - BASIC
    • Auth username - имя пользователя ClickHouse
    • Auth password - пароль ClickHouse
В этом HTTP Url легко допустить ошибку. Убедитесь, что экранирование выполнено корректно, чтобы избежать проблем.

  • Конфигурация
    • Input Kafka record value formatЗависит от исходных данных, но в большинстве случаев это JSON или Avro. В следующих настройках мы исходим из JSON.
    • В разделе advanced configurations:
      • HTTP Request Method - установите значение POST
      • Request Body Format - json
      • Batch batch size - согласно рекомендациям ClickHouse, установите значение не менее 1000.
      • Batch json as array - true
      • Retry on HTTP codes - 400-500, но при необходимости скорректируйте; например, это может измениться, если перед ClickHouse используется HTTP proxy.
      • Maximum Reties - значение по умолчанию (10) подходит, но при необходимости вы можете увеличить его для более надёжных повторных попыток.
5

Проверка подключения

Создайте сообщение в топике, настроенном для вашего HTTP Sink
и убедитесь, что созданное сообщение было записано в ваш экземпляр ClickHouse.

Устранение неполадок

HTTP Sink не выполняет батчинг сообщений

Из документации по Sink:
Коннектор HTTP Sink не выполняет батчинг запросов для сообщений с разными значениями заголовков Kafka.
  1. Убедитесь, что у ваших записей Kafka одинаковый ключ.
  2. При добавлении параметров в URL HTTP API для каждой записи может формироваться уникальный URL. По этой причине батчинг отключается при использовании дополнительных параметров URL.

400 Некорректный запрос

CANNOT_PARSE_QUOTED_STRING
Если при вставке объекта JSON в столбец String в HTTP Sink возникает следующая ошибка:
Установите параметр input_format_json_read_objects_as_strings=1 в URL в виде закодированной строки SETTINGS%20input_format_json_read_objects_as_strings%3D1

Загрузите набор данных GitHub (необязательно)

Обратите внимание: в этом примере сохраняются поля типа Array из набора данных GitHub. Мы предполагаем, что в примерах у вас есть пустой топик github, и для вставки сообщений в Kafka используем kcat.
1

Подготовьте конфигурацию

Следуйте этим инструкциям по настройке Connect в соответствии с типом вашей установки, учитывая различия между автономным и распределённым кластером. Если вы используете Confluent Cloud, вам нужен распределённый вариант.Самый важный параметр — http.api.url. HTTP-интерфейс ClickHouse требует передавать оператор INSERT как параметр URL. Он должен включать формат (JSONEachRow в данном случае) и целевую базу данных. Формат должен соответствовать данным Kafka, которые будут преобразованы в строку в HTTP-полезной нагрузке. Эти параметры должны быть URL-кодированы. Ниже показан пример такого формата для набора данных Github (при условии, что вы запускаете ClickHouse локально):
Следующие дополнительные параметры относятся к использению коннектора HTTP Sink с ClickHouse. Полный список параметров можно найти здесь:
  • request.method - Установите значение POST
  • retry.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.
Полный список настроек, включая сведения о том, как настроить прокси, повторные попытки и расширенные параметры SSL, можно найти здесь.Примеры файлов конфигурации для демонстрационных данных GitHub можно найти здесь при условии, что Connect запущен в автономном режиме, а Kafka размещён в Confluent Cloud.
2

Создайте таблицу в ClickHouse

Убедитесь, что таблица создана. Ниже приведён пример минимального набора данных GitHub с использованием стандартного движка MergeTree.
3

Добавьте данные в Kafka

Запишите сообщения в Kafka. Ниже мы используем kcat, чтобы отправить 10 тыс. сообщений.
Простой запрос к целевой таблице “Github” должен подтвердить вставку данных.
Последнее изменение 23 июля 2026 г.