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

Parquet

Входные данныеВыходные данныеПсевдоним

Описание

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

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

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

Тип данных Parquet (INSERT)Тип данных ClickHouseТип данных Parquet (SELECT)
BOOLBoolBOOL
UINT8, BOOLUInt8UINT8
INT8Int8/Enum8INT8
UINT16UInt16UINT16
INT16Int16/Enum16INT16
UINT32UInt32UINT32
INT32Int32INT32
UINT64UInt64UINT64
INT64Int64INT64
FLOATFloat32FLOAT
DOUBLEFloat64DOUBLE
DATEDate32DATE
TIME (ms)DateTimeUINT32
TIMESTAMP, TIME (us, ns)DateTime64TIMESTAMP
STRING, BINARYStringBINARY
STRING, BINARY, FIXED_LENGTH_BYTE_ARRAYFixedStringFIXED_LENGTH_BYTE_ARRAY
DECIMALDecimalDECIMAL
LISTArrayLIST
STRUCTTupleSTRUCT
MAPMapMAP
UINT32IPv4UINT32
FIXED_LENGTH_BYTE_ARRAY, BINARYIPv6FIXED_LENGTH_BYTE_ARRAY
FIXED_LENGTH_BYTE_ARRAY, BINARYInt128/UInt128/Int256/UInt256FIXED_LENGTH_BYTE_ARRAY

Массивы могут быть вложенными и могут иметь значение типа Nullable в качестве аргумента. Типы Tuple и Map также могут быть вложенными.

Типы данных Parquet, которые не поддерживаются:

  • FIXED_SIZE_BINARY
  • JSON
  • UUID
  • ENUM.

Типы данных колонок таблицы ClickHouse могут отличаться от соответствующих полей данных Parquet, которые вставляются. При вставке данных ClickHouse интерпретирует типы данных в соответствии с таблицей выше, а затем приводит к типу данных, который установлен для колонки таблицы ClickHouse.

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

Вставка и выборка данных

Вы можете вставить данные Parquet из файла в таблицу ClickHouse с помощью следующей команды:

Вы можете выбрать данные из таблицы ClickHouse и сохранить их в некоторый файл в формате Parquet с помощью следующей команды:

Для обмена данными с Hadoop вы можете использовать HDFS table engine.

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

ПараметрОписаниеЗначение по умолчанию
input_format_parquet_case_insensitive_column_matchingИгнорировать регистр при сопоставлении колонок Parquet с колонками CH.0
input_format_parquet_preserve_orderИзбегать перетасовки строк при чтении из Parquet файлов. Обычно это значительно замедляет процесс.0
input_format_parquet_filter_push_downПри чтении Parquet файлов пропускать целые группы строк на основе условий WHERE/PREWHERE и минимальных/максимальных статистик в метаданных Parquet.1
input_format_parquet_bloom_filter_push_downПри чтении Parquet файлов пропускать целые группы строк на основе условий WHERE и фильтра Блума в метаданных Parquet.0
input_format_parquet_use_native_readerПри чтении Parquet файлов использовать нативный читатель вместо arrow читателя.0
input_format_parquet_allow_missing_columnsРазрешить отсутствующие колонки при чтении форматов ввода Parquet.1
input_format_parquet_local_file_min_bytes_for_seekМинимальный объем байт, необходимый для локального чтения (файла) для осуществления перемещения вместо чтения с игнорированием в формате ввода Parquet.8192
input_format_parquet_enable_row_group_prefetchВключить предзагрузку групп строк при парсинге Parquet. В настоящее время только многопоточный парсинг может делать предзагрузку.1
input_format_parquet_skip_columns_with_unsupported_types_in_schema_inferenceПропускать колонки с неподдерживаемыми типами во время определения схемы для формата Parquet.0
input_format_parquet_max_block_sizeМаксимальный размер блока для читателя Parquet.65409
input_format_parquet_prefer_block_bytesСредний размер блока в байтах, выдаваемый читателем Parquet.16744704
output_format_parquet_row_group_sizeЦелевой размер группы строк в строках.1000000
output_format_parquet_row_group_size_bytesЦелевой размер группы строк в байтах, до сжатия.536870912
output_format_parquet_string_as_stringИспользовать тип Parquet String вместо Binary для строковых колонок.1
output_format_parquet_fixed_string_as_fixed_byte_arrayИспользовать тип Parquet FIXED_LENGTH_BYTE_ARRAY вместо Binary для FixedString колонок.1
output_format_parquet_versionВерсия формата Parquet для формата вывода. Поддерживаемые версии: 1.0, 2.4, 2.6 и 2.latest (по умолчанию).2.latest
output_format_parquet_compression_methodМетод сжатия для формата вывода Parquet. Поддерживаемые кодеки: snappy, lz4, brotli, zstd, gzip, none (без сжатия).zstd
output_format_parquet_compliant_nested_typesВ схеме файла parquet использовать имя 'element' вместо 'item' для элементов списка. Это исторический артефакт реализации библиотеки Arrow. В общем повышает совместимость, за исключением, возможно, некоторых старых версий Arrow.1
output_format_parquet_use_custom_encoderИспользовать более быстрые реализации кодировщика Parquet.1
output_format_parquet_parallel_encodingВыполнять кодирование Parquet в нескольких потоках. Требует output_format_parquet_use_custom_encoder.1
output_format_parquet_data_page_sizeЦелевой размер страницы в байтах, до сжатия.1048576
output_format_parquet_batch_sizeПроверять размер страницы каждые это количество строк. Рассмотрите возможность уменьшения, если у вас есть колонки со средними значениями размера более нескольких КБ.1024
output_format_parquet_write_page_indexДобавить возможность записывать индекс страниц в файлы parquet.1
input_format_parquet_import_nestedУстаревшая настройка, ничего не делает.0