ORC
| 输入 | 输出 | 别名 |
|---|---|---|
| ✔ | ✔ |
描述
Apache ORC 是一种列式存储格式,在 Hadoop 生态系统中被广泛使用。
数据类型匹配
下表比较了在 INSERT 和 SELECT 查询中支持的 ORC 数据类型及其对应的 ClickHouse 数据类型。
ORC data type (INSERT) | ClickHouse data type | ORC data type (SELECT) |
|---|---|---|
Boolean | UInt8 | Boolean |
Tinyint | Int8/UInt8/Enum8 | Tinyint |
Smallint | Int16/UInt16/Enum16 | Smallint |
Int | Int32/UInt32 | Int |
Bigint | Int64/UInt32 | Bigint |
Float | Float32 | Float |
Double | Float64 | Double |
Decimal | Decimal | Decimal |
Date | Date32 | Date |
Timestamp | DateTime64 | Timestamp |
String, Char, Varchar, Binary | String | Binary |
List | Array | List |
Struct | Tuple | Struct |
Map | Map | Map |
Int | IPv4 | Int |
Binary | IPv6 | Binary |
Binary | Int128/UInt128/Int256/UInt256 | Binary |
Binary | Decimal256 | Binary |
- 其他类型不受支持。
- 数组可以嵌套,并且其参数可以是
Nullable类型。Tuple和Map类型也可以嵌套。 - ClickHouse 表列的数据类型不必与对应的 ORC 数据字段完全一致。在插入数据时,ClickHouse 会根据上表解析数据类型,然后将数据转换为为 ClickHouse 表列设置的数据类型。
示例用法
插入数据
使用名为 football.orc 的 ORC 文件,其内容如下:
插入数据:
读取数据
使用 ORC 格式来读取数据:
提示
ORC 是一种二进制格式,无法在终端中以人类可读的形式查看。请使用 INTO OUTFILE 来输出 ORC 文件。
格式设置
| 设置 | 描述 | 默认值 |
|---|---|---|
output_format_arrow_string_as_string | 对 String 列使用 Arrow String 类型而不是 Binary 类型。 | false |
output_format_orc_compression_method | 输出 ORC 格式时使用的压缩方法。 | none |
input_format_arrow_case_insensitive_column_matching | 在将 Arrow 列与 ClickHouse 列进行匹配时忽略大小写。 | false |
input_format_arrow_allow_missing_columns | 读取 Arrow 数据时允许缺失列。 | false |
input_format_arrow_skip_columns_with_unsupported_types_in_schema_inference | 在对 Arrow 格式进行 schema 推断时,允许跳过包含不受支持类型的列。 | false |
要与 Hadoop 进行数据交换,可以使用 HDFS 表引擎。