描述
Avro 格式支持读取和写入 Avro 数据文件。该格式要求消息为自描述消息,并内嵌 schema。如果你将 Avro 与 Schema Registry 搭配使用,请参阅 AvroConfluent 格式。
数据类型映射
INSERT 和 SELECT queries 中对应的 ClickHouse 数据类型。
bytesis default, controlled by settingoutput_format_avro_string_column_pattern
null 作为字段值,因此,例如 Avro 的 union(T1, T2, null) 会被转换为 Variant(T1, T2)。
因此,当从 ClickHouse 生成 Avro 时,我们必须始终在 Avro 的 union 类型集合中包含 null 类型,因为在进行 schema inference 时,我们无法判断是否有某个值实际为 null。
*** Avro 逻辑类型
不受支持的 Avro 逻辑类型:
time-millistime-microsduration
格式设置
示例
读取 Avro 数据
record 类型。
为了找出表中列与 Avro schema 字段之间的对应关系,ClickHouse 会比较它们的名称。
这种比较区分大小写,未使用的字段会被跳过。
ClickHouse 表中列的数据类型可以与插入的 Avro 数据中的对应字段不同。插入数据时,ClickHouse 会根据上表解释数据类型,然后将数据转换为相应的列类型。
导入数据时,如果在 schema 中找不到某个字段,并且启用了设置 input_format_avro_allow_missing_fields,则会使用默认值,而不是抛出错误。
写入 Avro 数据
- 以
[A-Za-z_]开头 - 后续只能包含
[A-Za-z0-9_]
output_format_avro_codec 和 output_format_avro_sync_interval 设置进行配置。
推断 Avro schema
DESCRIBE 函数,你可以像下面的示例一样快速查看推断出的 Avro 文件格式。
此示例包含一个可公开访问的 Avro 文件 URL,位于 ClickHouse S3 公共 bucket 中: