AvroConfluent
Входные данные | Выходные данные | Псевдоним |
---|---|---|
✔ | ✗ |
Описание
AvroConfluent поддерживает декодирование сообщений Avro с одним объектом, часто используемых с Kafka и Confluent Schema Registry. Каждое сообщение Avro включает в себя ID схемы, который может быть разрешен в фактическую схему с помощью Schema Registry. Схемы кэшируются после разрешения.
Соответствие типов данных
Таблица ниже показывает все поддерживаемые типы данных формата Apache Avro и соответствующие типы данных ClickHouse в INSERT
и SELECT
запросах.
Avro тип данных INSERT | ClickHouse тип данных | Avro тип данных SELECT |
---|---|---|
boolean , int , long , float , double | Int(8\16\32), UInt(8\16\32) | int |
boolean , int , long , float , double | Int64, UInt64 | long |
boolean , int , long , float , double | Float32 | float |
boolean , int , long , float , double | Float64 | double |
bytes , string , fixed , enum | String | bytes или string * |
bytes , string , fixed | FixedString(N) | fixed(N) |
enum | Enum(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, …) ** |
null | Nullable(Nothing) | null |
int (date) *** | Date, Date32 | int (date) *** |
long (timestamp-millis) *** | DateTime64(3) | long (timestamp-millis) *** |
long (timestamp-micros) *** | DateTime64(6) | long (timestamp-micros) *** |
bytes (decimal) *** | DateTime64(N) | bytes (decimal) *** |
int | IPv4 | int |
fixed(16) | IPv6 | fixed(16) |
bytes (decimal) *** | Decimal(P, S) | bytes (decimal) *** |
string (uuid) *** | UUID | string (uuid) *** |
fixed(16) | Int128/UInt128 | fixed(16) |
fixed(32) | Int256/UInt256 | fixed(32) |
record | Tuple | record |
* bytes
по умолчанию, контролируется установкой output_format_avro_string_column_pattern
** Тип Variant неявно принимает null
как значение поля, поэтому, например, Avro union(T1, T2, null)
будет преобразован в Variant(T1, T2)
. В результате, при создании Avro из ClickHouse, мы всегда должны включать тип null
в набор типов Avro union
, так как мы не знаем, является ли любое значение на самом деле null
во время вывода схемы.
Неподдерживаемые логические типы данных 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. |