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

Описание

Apache Parquet — столбцовый формат хранения данных, широко распространённый в экосистеме Hadoop. ClickHouse поддерживает чтение и запись в этом формате.

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

В таблице ниже показано, как типы данных Parquet соотносятся с типами данных ClickHouse. При записи файла Parquet типы данных, для которых нет соответствующего типа Parquet, преобразуются в ближайший доступный тип: Массивы могут быть вложенными и в качестве аргумента могут содержать значение типа Nullable. Типы Tuple и Map также могут быть вложенными. Типы данных столбцов таблицы ClickHouse могут отличаться от соответствующих полей вставляемых данных Parquet. При вставке данных ClickHouse интерпретирует типы данных в соответствии с таблицей выше, а затем преобразует данные к типу, заданному для столбца таблицы ClickHouse. Например, столбец Parquet типа UINT_32 можно прочитать в столбец ClickHouse типа IPv4. Для некоторых типов Parquet нет близкого соответствия среди типов ClickHouse. Они читаются следующим образом:
  • TIME (время суток) читается как временная метка. Например, 10:23:13.000 становится 1970-01-01 10:23:13.000.
  • TIMESTAMP/TIME с isAdjustedToUTC=false — это локальное wall-clock time (поля года, месяца, дня, часа, минуты, секунды и долей секунды в локальном часовом поясе, независимо от того, какой именно часовой пояс считается локальным), то же, что и SQL TIMESTAMP WITHOUT TIME ZONE. Однако ClickHouse читает его так, как если бы это была временная метка UTC. Например, 2025-09-29 18:42:13.000 (представляющее показание местных часов) становится 2025-09-29 18:42:13.000 (DateTime64(3, 'UTC'), представляющим момент времени). При преобразовании в String отображаются правильные значения года, месяца, дня, часа, минуты, секунды и долей секунды, которые затем можно интерпретировать как относящиеся к некоторому локальному часовому поясу, а не к UTC. Как ни парадоксально, изменение типа с DateTime64(3, 'UTC') на DateTime64(3) не поможет, поскольку оба типа представляют момент времени, а не показание часов, но DateTime64(3) при этом будет ошибочно форматироваться с использованием локального часового пояса.
  • INTERVAL в настоящее время читается как FixedString(12) с сырым бинарным представлением временного интервала в том виде, в каком оно закодировано в файле Parquet.

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

Вставка данных

Используйте файл Parquet со следующими данными с именем football.parquet:
Вставьте данные:

Чтение данных

Прочитайте данные в формате Parquet:
Parquet — это бинарный формат, который не отображается в терминале в удобочитаемом виде. Используйте INTO OUTFILE для вывода файлов Parquet.
Для обмена данными с Hadoop можно использовать движок таблицы HDFS.

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

Последнее изменение 19 июня 2026 г.