Arrow
输入 | 输出 | 别名 |
---|---|---|
✔ | ✔ |
描述
Apache Arrow 带有两种内置的列式存储格式。ClickHouse 支持对这些格式的读写操作。Arrow
是 Apache Arrow 的 "文件模式" 格式。它专为内存中的随机访问而设计。
数据类型匹配
下表显示了支持的数据类型以及它们在 INSERT
和 SELECT
查询中如何对应 ClickHouse 数据类型。
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 | UINT32 |
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 表中
$ cat filename.arrow | clickhouse-client --query="INSERT INTO some_table FORMAT Arrow"
选择数据
您可以使用以下命令从 ClickHouse 表中选择数据,并将其保存到 Arrow 格式的文件中
$ clickhouse-client --query="SELECT * FROM {some_table} FORMAT Arrow" > {filename.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 的 schema 推断中,跳过具有不支持类型的列 | 0 |
output_format_arrow_compression_method | Arrow 输出格式的压缩方法。支持的编解码器:lz4_frame, zstd, none (未压缩) | lz4_frame |
output_format_arrow_fixed_string_as_fixed_byte_array | 对于 FixedString 列,使用 Arrow FIXED_SIZE_BINARY 类型而不是 Binary。 | 1 |
output_format_arrow_low_cardinality_as_dictionary | 启用将 LowCardinality 类型作为 Dictionary Arrow 类型输出 | 0 |
output_format_arrow_string_as_string | 对于 String 列,使用 Arrow String 类型而不是 Binary | 1 |
output_format_arrow_use_64_bit_indexes_for_dictionary | 始终在 Arrow 格式中使用 64 位整数作为字典索引 | 0 |
output_format_arrow_use_signed_indexes_for_dictionary | 在 Arrow 格式中使用有符号整数作为字典索引 | 1 |