Использование Vector с Kafka и ClickHouse
Лицензия
Подготовьте сведения о подключении
Сведения о подключении для вашего сервиса ClickHouse Cloud доступны в консоли ClickHouse Cloud.
Выберите сервис и нажмите Connect:

curl.

Шаги
- Создайте топик Kafka
githubи вставьте датасет GitHub.
ClickHouse/ClickHouse.
- Убедитесь, что целевая таблица создана. Ниже используется база данных по умолчанию.
- Скачайте и установите Vector. Создайте файл конфигурации
kafka.tomlи измените значения для ваших экземпляров Kafka и ClickHouse.
- Этот пример был протестирован с Confluent Cloud. Поэтому параметры безопасности
sasl.*иssl.enabledмогут не подходить для самоуправляемых развертываний. - Для параметра конфигурации
bootstrap_serversпрефикс протокола не требуется, например:pkc-2396y.us-east-1.aws.confluent.cloud:9092 - Параметр источника
decoding.codec = "json"гарантирует, что сообщение будет передано в приёмник ClickHouse как единый объект JSON. Если обрабатывать сообщения как строки и использовать значениеbytesпо умолчанию, содержимое сообщения будет добавлено в полеmessage. В большинстве случаев это потребует дополнительной обработки в ClickHouse, как описано в руководстве Начало работы с Vector. - Vector добавляет ряд полей в сообщения. В нашем примере мы игнорируем эти поля в приёмнике ClickHouse с помощью параметра конфигурации
skip_unknown_fields = true. При этом игнорируются поля, которых нет в схеме целевой таблицы. При необходимости скорректируйте схему, чтобы добавить эти метаполя, напримерoffset. - Обратите внимание, как приёмник ссылается на источник событий через параметр
inputs. - Обратите внимание на поведение приёмника ClickHouse, описанное здесь. Для оптимальной пропускной способности можно настроить параметры
buffer.max_events,batch.timeout_secsиbatch.max_bytes. Согласно рекомендациям ClickHouse, значение 1000 следует считать минимальным количеством событий в одном батче. Для сценариев с равномерно высокой пропускной способностью можно увеличить параметрbuffer.max_events. При более переменной пропускной способности может потребоваться изменить параметрbatch.timeout_secs. - Параметр
auto_offset_reset = "smallest"принудительно задает для источника Kafka чтение с начала топика, гарантируя, что будут прочитаны сообщения, опубликованные на шаге (1). В вашем случае может потребоваться другое поведение. Подробнее см. здесь.
- Запустите Vector
VECTOR_LOG=debug, чтобы включить более подробное логирование — это может быть полезно, если возникнут проблемы.
- Подтвердите вставку данных.