Apache Avro — это строчно-ориентированный формат сериализации, использующий двоичное кодирование для эффективной обработки данных. Формат Avro поддерживает чтение и запись файлов данных Avro. Этот формат предполагает самоописываемые сообщения со встроенной схемой. Если вы используете Avro с реестром схем, обратитесь к формату AvroConfluent.
Сопоставление типов данных
В таблице ниже приведены все типы данных, поддерживаемые форматом Apache Avro, и соответствующие им типы данных ClickHouse в запросах INSERT и SELECT.
** Тип Variant неявно допускает null в качестве значения поля, поэтому, например, Avro union(T1, T2, null) будет преобразован в Variant(T1, T2).
В результате при генерации Avro из ClickHouse нам всегда нужно включать тип null в набор типов Avro union, поскольку во время вывода схемы мы не знаем, является ли какое-либо из значений фактически null.
*** Логические типы Avro
Неподдерживаемые логические типы данных Avro:
time-millis
time-micros
duration
Чтение данных в формате Avro
Чтобы прочитать данные из файла Avro в таблицу ClickHouse:
Корневая схема принимаемого Avro-файла должна иметь тип record.
Чтобы определить соответствие между столбцами таблицы и полями схемы Avro, ClickHouse сравнивает их имена.
Сравнение чувствительно к регистру, а неиспользуемые поля пропускаются.
Типы данных столбцов таблицы ClickHouse могут отличаться от соответствующих полей вставляемых данных Avro. При вставке данных ClickHouse интерпретирует типы данных в соответствии с таблицей выше, а затем приводит данные к соответствующему типу столбца.
При импорте данных, если поле не найдено в схеме и включена настройка input_format_avro_allow_missing_fields, вместо ошибки будет использовано значение по умолчанию.
Запись данных в формате Avro
Чтобы записать данные из таблицы ClickHouse в файл Avro:
Имена столбцов должны:
- Начинаться с
[A-Za-z_]
- Содержать далее только
[A-Za-z0-9_]
Сжатие вывода и интервал синхронизации для файлов Avro можно настроить с помощью параметров output_format_avro_codec и output_format_avro_sync_interval соответственно.
С помощью функции ClickHouse DESCRIBE можно быстро просмотреть автоматически выведенную схему файла Avro, как в следующем примере.
В этом примере используется URL общедоступного файла Avro из публичного бакета S3 ClickHouse:
Последнее изменение 23 июля 2026 г.