Arrow
| Входной | Выходной | Псевдоним | 
|---|---|---|
| ✔ | ✔ | 
Описание
Apache Arrow поставляется с двумя встроенными форматами хранения в столбцах. ClickHouse поддерживает операции чтения и записи для этих форматов.
Arrow — это формат "файлового режима" Apache Arrow. Он предназначен для случайного доступа в памяти.
Сопоставление типов данных
В таблице ниже показаны поддерживаемые типы данных и их соответствие типам данных ClickHouse типы данных в запросах INSERT и SELECT.
| Тип данных Arrow ( INSERT) | Тип данных ClickHouse | Тип данных Arrow ( SELECT) | 
|---|---|---|
| BOOL | Bool | BOOL | 
| UINT8,BOOL | UInt8 | UINT8 | 
| INT8 | Int8/Enum8 | INT8 | 
| UINT16 | UInt16 | UINT16 | 
| INT16 | Int16/Enum16 | INT16 | 
| UINT32 | UInt32 | UINT32 | 
| INT32 | Int32 | INT32 | 
| UINT64 | UInt64 | UINT64 | 
| INT64 | Int64 | INT64 | 
| FLOAT,HALF_FLOAT | Float32 | FLOAT32 | 
| DOUBLE | Float64 | FLOAT64 | 
| DATE32 | Date32 | UINT16 | 
| DATE64 | DateTime | UINT32 | 
| TIMESTAMP,TIME32,TIME64 | DateTime64 | TIMESTAMP | 
| STRING,BINARY | String | BINARY | 
| STRING,BINARY,FIXED_SIZE_BINARY | FixedString | FIXED_SIZE_BINARY | 
| DECIMAL | Decimal | DECIMAL | 
| DECIMAL256 | Decimal256 | DECIMAL256 | 
| LIST | Array | LIST | 
| STRUCT | Tuple | STRUCT | 
| MAP | Map | MAP | 
| UINT32 | IPv4 | UINT32 | 
| FIXED_SIZE_BINARY,BINARY | IPv6 | FIXED_SIZE_BINARY | 
| FIXED_SIZE_BINARY,BINARY | Int128/UInt128/Int256/UInt256 | FIXED_SIZE_BINARY | 
Массивы могут быть вложенными и могут иметь значение типа Nullable в качестве аргумента. Типы Tuple и Map также могут быть вложенными.
Тип DICTIONARY поддерживается для запросов INSERT, а для запросов SELECT есть настройка output_format_arrow_low_cardinality_as_dictionary, которая позволяет выводить тип LowCardinality в виде типа DICTIONARY.
Поддерживаемые типы данных Arrow, не входящие в список:
- FIXED_SIZE_BINARY
- JSON
- UUID
- ENUM.
Типы данных колонок таблицы ClickHouse не обязательно должны соответствовать соответствующим полям данных Arrow. При вставке данных ClickHouse интерпретирует типы данных в соответствии с таблицей выше, а затем преобразует данные в тип данных, установленный для колонки таблицы ClickHouse.
Пример использования
Вставка данных
Вы можете вставить данные Arrow из файла в таблицу ClickHouse, используя следующую команду:
Выбор данных
Вы можете выбрать данные из таблицы ClickHouse и сохранить их в некоторый файл в формате Arrow, используя следующую команду:
Настройки формата
| Настройка | Описание | По умолчанию | 
|---|---|---|
| input_format_arrow_allow_missing_columns | Разрешить отсутствующие колонки при чтении форматов входных данных Arrow | 1 | 
| input_format_arrow_case_insensitive_column_matching | Игнорировать регистр при сопоставлении колонок Arrow с колонками CH. | 0 | 
| input_format_arrow_import_nested | Устаревшая настройка, ничего не делает. | 0 | 
| input_format_arrow_skip_columns_with_unsupported_types_in_schema_inference | Пропускать колонки с неподдерживаемыми типами при выводе схемы для формата Arrow | 0 | 
| output_format_arrow_compression_method | Метод сжатия для формата вывода Arrow. Поддерживаемые кодеки: lz4_frame, zstd, none (несжатый) | lz4_frame | 
| output_format_arrow_fixed_string_as_fixed_byte_array | Использовать тип Arrow FIXED_SIZE_BINARY вместо Binary для колонок FixedString. | 1 | 
| output_format_arrow_low_cardinality_as_dictionary | Включить вывод типа LowCardinality в виде типа Dictionary Arrow | 0 | 
| output_format_arrow_string_as_string | Использовать тип Arrow String вместо Binary для строковых колонок | 1 | 
| output_format_arrow_use_64_bit_indexes_for_dictionary | Всегда использовать 64-битные целые числа для индексов словаря в формате Arrow | 0 | 
| output_format_arrow_use_signed_indexes_for_dictionary | Использовать знаковые целые числа для индексов словаря в формате Arrow | 1 | 
