在 ClickHouse 中使用 Avro、Arrow 和 ORC 数据
Apache 发布了多种数据格式,这些格式在分析环境中被广泛使用,其中包括流行的 Avro、Arrow 和 Orc。 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 服务器。