Этот коннектор следует использовать только в том случае, если ваши данные просты и состоят из примитивных типов данных, например
int. Специфичные для ClickHouse типы, такие как Map, не поддерживаются.Лицензия
Порядок действий
Подготовьте сведения о подключении
Сведения о подключении для вашего сервиса ClickHouse Cloud доступны в консоли ClickHouse Cloud.
Выберите сервис и нажмите Connect:
Выберите HTTPS. Сведения о подключении будут показаны в примере команды
curl.
Если вы используете самоуправляемый ClickHouse, сведения о подключении задаёт ваш администратор ClickHouse.
1. Установите Kafka Connect и коннектор
2. Загрузите и установите JDBC-драйвер
clickhouse-jdbc-<version>-shaded.jar отсюда. Установите его в Kafka Connect, следуя инструкциям здесь. Другие драйверы могут работать, но не тестировались.
Распространённая проблема: в документации рекомендуется скопировать jar-файл в
share/java/kafka-connect-jdbc/. Если у вас возникают проблемы с тем, что Connect не находит драйвер, скопируйте его в share/confluent-hub-components/confluentinc-kafka-connect-jdbc/lib/. Либо измените plugin.path, чтобы он включал драйвер, — см. ниже.3. Подготовьте конфигурацию
_connection.url_- должен иметь видjdbc:clickhouse://<clickhouse host>:<clickhouse http port>/<target database>connection.user- пользователь с правами на запись в целевую базу данныхtable.name.format- таблица ClickHouse, в которую выполняется вставка данных. Она должна существовать.batch.size- количество строк, отправляемых в одном батче. Убедитесь, что здесь задано достаточно большое значение. Согласно рекомендациям ClickHouse, значение 1000 следует считать минимумом.tasks.max- коннектор JDBC Sink поддерживает запуск одной или нескольких задач. Это можно использовать для повышения производительности. Наряду с размером батча это ваш основной способ повысить производительность.value.converter.schemas.enable- установите false, если используете Schema Registry, и true, если встраиваете схемы в сообщения.value.converter- задайте в соответствии с типом данных, например для JSON:io.confluent.connect.json.JsonSchemaConverter.key.converter- установитеorg.apache.kafka.connect.storage.StringConverter. Мы используем ключи String.pk.mode- для ClickHouse неактуален. Установите none.auto.create- не поддерживается и должно быть false.auto.evolve- для этого параметра мы рекомендуем false, хотя в будущем он может поддерживаться.insert.mode- установите значение “insert”. Другие режимы в настоящее время не поддерживаются.key.converter- задайте в соответствии с типами ваших ключей.value.converter- задайте в зависимости от типа данных в вашем топике. Эти данные должны иметь поддерживаемую схему — в форматах JSON, Avro или Protobuf.
value.converter.schemas.enable- установите false, так как мы используем Schema Registry. Установите true, если вы встраиваете схему в каждое сообщение.key.converter- установите “org.apache.kafka.connect.storage.StringConverter”. Мы используем ключи String.value.converter- установите “io.confluent.connect.json.JsonSchemaConverter”.value.converter.schema.registry.url- укажите URL сервера схем вместе с учётными данными для него через параметрvalue.converter.schema.registry.basic.auth.user.info.
4. Создайте таблицу ClickHouse
5. Запустите Kafka Connect
6. Добавьте данные в Kafka
github.config, указав в нем учетные данные Kafka. Сейчас скрипт настроен для использования с Confluent Cloud.
Рекомендуемые материалы для дальнейшего чтения
- Параметры конфигурации Kafka Sink Connector
- Подробный разбор Kafka Connect — JDBC Source Connector
- Подробный разбор Kafka Connect JDBC Sink: работа с первичными ключами
- Kafka Connect в действии: JDBC Sink — для тех, кто предпочитает смотреть, а не читать.
- Подробный разбор Kafka Connect — конвертеры и сериализация