Реестры схем
ClickPipes поддерживает работу с реестрами схем для потоков данных в формате Avro.
Поддерживаемые реестры для Kafka ClickPipes
Поддерживаются реестры схем, совместимые с API Confluent Schema Registry. К ним относятся:
- Confluent Schema Registry
- Redpanda Schema Registry
ClickPipes пока не поддерживает AWS Glue Schema Registry или Azure Schema Registry. Если вам требуется поддержка этих реестров схем, свяжитесь с нашей командой.
Конфигурация
ClickPipes с данными в формате Avro требуют реестр схем. Его можно настроить одним из трёх способов:
- Указать полный путь к subject'у схемы (например,
https://registry.example.com/subjects/events)- При необходимости можно сослаться на конкретную версию, добавив
/versions/[version]к URL (в противном случае ClickPipes получат последнюю версию).
- При необходимости можно сослаться на конкретную версию, добавив
- Указать полный путь к идентификатору схемы (например,
https://registry.example.com/schemas/ids/1000) - Указать корневой URL реестра схем (например,
https://registry.example.com)
Как это работает
ClickPipes динамически запрашивает и применяет Avro-схему из настроенного реестра схем.
- Если в сообщении встроен идентификатор схемы, он используется для получения схемы.
- Если в сообщении нет встроенного идентификатора схемы, для получения схемы используется идентификатор схемы или имя субъекта (subject name), указанные в конфигурации ClickPipe.
- Если сообщение записано без встроенного идентификатора схемы и в конфигурации ClickPipe не указан ни идентификатор схемы, ни имя субъекта, схема не запрашивается, а сообщение пропускается; в таблицу ошибок ClickPipes записывается
SOURCE_SCHEMA_ERROR. - Если сообщение не соответствует схеме, оно пропускается; в таблицу ошибок ClickPipes записывается
DATA_PARSING_ERROR.
Сопоставление схем
К сопоставлению между полученной схемой Avro и целевой таблицей ClickHouse применяются следующие правила:
- Если схема Avro содержит поле, которое не включено в сопоставление с целевой таблицей ClickHouse, это поле игнорируется.
- Если в схеме Avro отсутствует поле, определённое в сопоставлении целевой таблицы ClickHouse, соответствующий столбец ClickHouse будет заполнен «нулевым» значением, таким как 0 или пустая строка. Обратите внимание, что выражения DEFAULT в настоящее время не вычисляются для вставок ClickPipes (это временное ограничение до обновления обработки значений по умолчанию в сервере ClickHouse).
- Если поле схемы Avro и столбец ClickHouse несовместимы, вставка такой строки/сообщения завершится с ошибкой, и сбой будет зафиксирован в таблице ошибок ClickPipes. Обратите внимание, что поддерживается несколько неявных преобразований (например, между числовыми типами), но не все (например, поле записи Avro не может быть вставлено в столбец ClickHouse типа Int32).