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

Работа с Parquet в ClickHouse

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

подсказка

Когда вы ссылаетесь на путь к файлу в запросе, из которого ClickHouse попытается прочитать, будет зависеть от варианта ClickHouse, который вы используете.

Если вы используете clickhouse-local, он будет читать из местоположения, относительно того, где вы запустили ClickHouse Local. Если вы используете ClickHouse Server или ClickHouse Cloud через clickhouse client, он будет читать из местоположения, относительно каталога /var/lib/clickhouse/user_files/ на сервере.

Импорт из Parquet

Перед загрузкой данных мы можем использовать file() функцию, чтобы изучить структуру пример файла parquet:

Мы использовали Parquet в качестве второго аргумента, чтобы ClickHouse знал формат файла. Это выведет колонки с типами:

Мы также можем изучить файлы перед фактическим импортом данных, используя всю мощь SQL:

подсказка

Мы можем пропустить явную установку формата для file() и INFILE/OUTFILE. В этом случае ClickHouse автоматически определит формат на основе расширения файла.

Импорт в существующую таблицу

Давайте создадим таблицу, в которую мы импортируем данные Parquet:

Теперь мы можем импортировать данные с помощью инструкции FROM INFILE:

Обратите внимание, как ClickHouse автоматически преобразовал строки Parquet (в колонке date) в тип Date. Это происходит потому, что ClickHouse автоматически выполняет преобразование типа на основе типов в целевой таблице.

Вставка локального файла на удаленный сервер

Если вы хотите вставить локальный файл Parquet на удаленный сервер ClickHouse, вы можете сделать это, перенаправив содержимое файла в clickhouse-client, как показано ниже:

Создание новых таблиц из файлов Parquet

Поскольку ClickHouse читает схему файла parquet, мы можем создавать таблицы на лету:

Это автоматически создаст и заполнит таблицу из заданного файла parquet:

По умолчанию ClickHouse строг к именам колонок, типам и значениям. Но иногда мы можем пропустить несуществующие колонки или неподдерживаемые значения во время импорта. Это можно настроить с помощью настроек Parquet.

Экспорт в формат Parquet

подсказка

При использовании INTO OUTFILE с ClickHouse Cloud вам нужно будет выполнять команды в clickhouse client на машине, где файл будет записан.

Чтобы экспортировать любую таблицу или результат запроса в файл Parquet, мы можем использовать инструкцию INTO OUTFILE:

Это создаст файл export.parquet в рабочем каталоге.

Типы данных ClickHouse и Parquet

Типы данных ClickHouse и Parquet в основном идентичны, но все же немного различаются. Например, ClickHouse экспортирует тип DateTime как int64 Parquet. Если мы затем импортируем это обратно в ClickHouse, мы увидим числа (файл time.parquet):

В этом случае может быть использовано преобразование типов:

Дальнейшее чтение

ClickHouse вводит поддержку множества форматов, как текстовых, так и двоичных, чтобы покрыть различные сценарии и платформы. Изучите больше форматов и способы работы с ними в следующих статьях:

Также ознакомьтесь с clickhouse-local - переносным полнофункциональным инструментом для работы с локальными/удаленными файлами без необходимости в сервере ClickHouse.