跳到主要内容
跳到主要内容

ORC

输入输出别名

描述

Apache ORC 是一种列式存储格式,广泛用于 Hadoop 生态系统中。

数据类型匹配

下表比较了受支持的 ORC 数据类型及其在 INSERTSELECT 查询中对应的 ClickHouse 数据类型

ORC 数据类型 (INSERT)ClickHouse 数据类型ORC 数据类型 (SELECT)
BooleanUInt8Boolean
TinyintInt8/UInt8/Enum8Tinyint
SmallintInt16/UInt16/Enum16Smallint
IntInt32/UInt32Int
BigintInt64/UInt32Bigint
FloatFloat32Float
DoubleFloat64Double
DecimalDecimalDecimal
DateDate32Date
TimestampDateTime64Timestamp
String, Char, Varchar, BinaryStringBinary
ListArrayList
StructTupleStruct
MapMapMap
IntIPv4Int
BinaryIPv6Binary
BinaryInt128/UInt128/Int256/UInt256Binary
BinaryDecimal256Binary
  • 不支持其他类型。
  • 数组可以嵌套,并且可以将 Nullable 类型的值作为参数。TupleMap 类型也可以嵌套。
  • ClickHouse 表列的数据类型不必与相应的 ORC 数据字段匹配。插入数据时,ClickHouse 会根据上表解释数据类型,然后 转换 数据为 ClickHouse 表列设置的数据类型。

使用示例

插入数据

您可以使用以下命令将文件中的 ORC 数据插入到 ClickHouse 表中

$ cat filename.orc | clickhouse-client --query="INSERT INTO some_table FORMAT ORC"

选择数据

您可以使用以下命令从 ClickHouse 表中选择数据,并将其保存为 ORC 格式的文件

$ clickhouse-client --query="SELECT * FROM {some_table} FORMAT ORC" > {filename.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 格式的模式推断时,允许跳过具有不支持类型的列。false

要与 Hadoop 交换数据,您可以使用 HDFS 表引擎