Описание
AvroConfluent поддерживает чтение и запись сообщений в формате Avro с использованием Confluent Schema Registry (или сервисов с совместимым API).
Каждое сообщение использует формат передачи данных Confluent: магический байт (0x00), затем 4-байтовый идентификатор схемы в порядке байтов big-endian, после чего следует двоичное значение Avro. При чтении ClickHouse определяет идентификатор схемы, обращаясь к реестру. При записи ClickHouse регистрирует схему, полученную из выходных столбцов, и добавляет полученный идентификатор в начало каждой строки. Для оптимальной производительности схемы кэшируются.
Соответствие типов данных
INSERT и SELECT.
bytesявляется значением по умолчанию и задаётся настройкойoutput_format_avro_string_column_pattern
null в качестве значения поля, поэтому, например, Avro union(T1, T2, null) будет преобразован в Variant(T1, T2).
В результате при генерации Avro из ClickHouse нам всегда нужно включать тип null в набор типов Avro union, поскольку во время вывода схемы мы не знаем, является ли какое-либо из значений фактически null.
*** Логические типы Avro
Неподдерживаемые логические типы данных Avro:
time-millistime-microsduration
Настройки формата
Примеры
Чтение из Kafka
format_avro_schema_registry_url, чтобы указать URL реестра схем.
Запись в Kafka
Использование базовой аутентификации
format_avro_schema_registry_url.
Устранение неполадок
system.kafka_consumers. Если в вашем развертывании несколько реплик (например, в ClickHouse Cloud), необходимо использовать табличную функцию clusterAllReplicas.