在 ClickHouse 中处理 Avro、Arrow 和 ORC 数据
Apache 发布了多种数据格式,这些格式在分析环境中被广泛使用,包括流行的 Avro、Arrow 和 Orc。 ClickHouse 支持使用列表中的任何格式进行数据的导入和导出。
以 Avro 格式导入和导出
ClickHouse 支持读取和写入广泛用于 Hadoop 系统的 Apache Avro 数据文件。
要从 avro 文件 导入数据,我们应该在 INSERT
语句中使用 Avro 格式:
使用 file() 函数,我们还可以在实际导入数据之前查看 Avro 文件:
要导出到 Avro 文件:
Avro 和 ClickHouse 数据类型
在导入或导出 Avro 文件时,请考虑 数据类型匹配。加载 Avo 文件时,使用显式类型转换进行转换:
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 服务器。