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

在 ClickHouse 中使用 Avro、Arrow 和 ORC 数据

Apache 发布了多种数据格式,这些格式在分析环境中被广泛使用,其中包括流行的 AvroArrowOrc。 ClickHouse 支持使用列表中的任意格式导入和导出数据。

在 Avro 格式中导入和导出数据

ClickHouse 支持读取和写入 Apache Avro 数据文件,这些文件在 Hadoop 系统中被广泛使用。

要从 avro 文件 导入数据,我们应该在 INSERT 语句中使用 Avro 格式:

使用 file() 函数,我们可以在实际导入数据之前探索 Avro 文件:

要导出到 Avro 文件:

Avro 和 ClickHouse 数据类型

在导入或导出 Avro 文件时,请考虑 数据类型匹配。在从 Avro 文件加载数据时使用显式类型转换:

Kafka 中的 Avro 消息

当 Kafka 消息使用 Avro 格式时,ClickHouse 可以使用 AvroConfluent 格式和 Kafka 引擎读取这样的流:

使用 Arrow 格式

另一种列式格式是 Apache Arrow,ClickHouse 也支持此格式的导入和导出。要从 Arrow 文件 导入数据,我们使用 Arrow 格式:

导出到 Arrow 文件的方式相同:

此外,检查 数据类型匹配,以确定是否需要手动转换。

Arrow 数据流

ArrowStream 格式可用于处理 Arrow 数据流(用于内存处理)。ClickHouse 可以读取和写入 Arrow 流。

为了演示 ClickHouse 如何流式传输 Arrow 数据,让我们将其通过以下 Python 脚本传输(它读取 Arrow 流格式的输入流,并将结果输出为 Pandas 表):

现在,我们可以通过将 ClickHouse 的输出传输到脚本来流式传输数据:

ClickHouse 也可以使用相同的 ArrowStream 格式读取 Arrow 流:

我们使用 arrow-stream 作为 Arrow 数据流的可能源。

导入和导出 ORC 数据

Apache ORC 格式是一种列式存储格式,通常用于 Hadoop。 ClickHouse 支持使用 ORC 格式 导入和导出 Orc 数据

此外,检查 数据类型匹配 以及 其他设置,以调整导出和导入。

进一步阅读

ClickHouse 引入了对多种格式(包括文本和二进制)的支持,以覆盖各种场景和平台。在以下文章中探索更多格式及其使用方法:

同时,查看 clickhouse-local - 一个便携式全功能工具,用于处理本地/远程文件,而无需 ClickHouse 服务器。