Перейти к основному содержимому
Перейти к основному содержимому

AvroConfluent

InputOutputAlias

Описание

AvroConfluent поддерживает декодирование сообщении Avro с одним объектом, которые обычно используются с Kafka и Confluent Schema Registry. Каждый Avro-сообщение включает в себя ID схемы, который может быть разрешен до фактической схемы с помощью Schema Registry. Схемы кэшируются после разрешения.

Сопоставление типов данных

Таблица ниже показывает все типы данных, поддерживаемые форматом Apache Avro, и соответствующие им типы данных ClickHouse в запросах INSERT и SELECT.

Тип данных Avro INSERTТип данных ClickHouseТип данных Avro SELECT
boolean, int, long, float, doubleInt(8\16\32), UInt(8\16\32)int
boolean, int, long, float, doubleInt64, UInt64long
boolean, int, long, float, doubleFloat32float
boolean, int, long, float, doubleFloat64double
bytes, string, fixed, enumStringbytes или string *
bytes, string, fixedFixedString(N)fixed(N)
enumEnum(8\16)enum
array(T)Array(T)array(T)
map(V, K)Map(V, K)map(string, K)
union(null, T), union(T, null)Nullable(T)union(null, T)
union(T1, T2, …) **Variant(T1, T2, …)union(T1, T2, …) **
nullNullable(Nothing)null
int (date) ***Date, Date32int (date) ***
long (timestamp-millis) ***DateTime64(3)long (timestamp-millis) ***
long (timestamp-micros) ***DateTime64(6)long (timestamp-micros) ***
bytes (decimal) ***DateTime64(N)bytes (decimal) ***
intIPv4int
fixed(16)IPv6fixed(16)
bytes (decimal) ***Decimal(P, S)bytes (decimal) ***
string (uuid) ***UUIDstring (uuid) ***
fixed(16)Int128/UInt128fixed(16)
fixed(32)Int256/UInt256fixed(32)
recordTuplerecord

* bytes является значением по умолчанию, контролируемым настройкой output_format_avro_string_column_pattern

** Тип Variant неявно принимает null как значение поля, поэтому, например, Avro union(T1, T2, null) будет преобразован в Variant(T1, T2). В результате, при генерации Avro из ClickHouse, мы должны всегда включать тип null в набор типов Avro union, так как мы не знаем, является ли какое-либо значение на самом деле null во время вывода схемы.

*** Логические типы Avro

Неподдерживаемые логические типы данных Avro:

  • time-millis
  • time-micros
  • duration

Пример использования

Чтобы быстро проверить разрешение схемы, вы можете использовать kafkacat с clickhouse-local:

Чтобы использовать AvroConfluent с Kafka:

Настройки формата

URL Schema Registry настраивается с помощью format_avro_schema_registry_url.

примечание

Установка format_avro_schema_registry_url должна быть настроена в users.xml, чтобы сохранить свое значение после перезагрузки. Также вы можете использовать настройку format_avro_schema_registry_url движка таблиц Kafka.

НастройкаОписаниеЗначение по умолчанию
input_format_avro_allow_missing_fieldsДля формата Avro/AvroConfluent: когда поле не найдено в схеме, использовать значение по умолчанию вместо ошибки0
input_format_avro_null_as_defaultДля формата Avro/AvroConfluent: вставить значение по умолчанию в случае null и ненулевого столбца0
format_avro_schema_registry_urlДля формата AvroConfluent: URL Confluent Schema Registry.