Apache ORC 是一种在 Hadoop 生态中广泛使用的列式存储格式。
下表比较了支持的 ORC 数据类型,以及它们在 INSERT 和 SELECT 查询中对应的 ClickHouse 数据类型。
ORC 数据类型 (INSERT) | ClickHouse 数据类型 | ORC 数据类型 (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 |
- 不支持其他类型。
Array 可以嵌套,也可以接受 Nullable 类型的值作为参数。Tuple 和 Map 类型同样可以嵌套。
- ClickHouse 表列的数据类型不必与对应的 ORC 数据字段一致。插入数据时,ClickHouse 会根据上表解释数据类型,然后将数据转换为 ClickHouse 表列设置的数据类型。
使用名为 football.orc、包含以下数据的 ORC 文件:
插入数据:
使用 ORC 格式读取数据:
ORC 是一种二进制格式,无法在终端中以人类可读的形式显示。请使用 INTO OUTFILE 将 ORC 文件输出到文件。
要与 Hadoop 交换数据,可以使用 HDFS 表引擎。