说明
ArrowStream 是 Apache Arrow 的“流模式”格式,专为内存中的流式处理而设计。
示例用法
forex 数据集,可在
ClickHouse SQL playground 中使用。你可以使用主机 sql-clickhouse.clickhouse.com
和用户 demo (无需密码) ,通过 clickhouse-client 远程连接到它。forex 表位于
forex 数据库中,因此我们将其选作默认数据库:
forex 表用于存储货币汇率。我们可以通过查询 system.columns 来查看它的大小,
以及它在磁盘上的压缩情况:
Query
Response
Arrow“文件模式”格式不同,ArrowStream 是以
record batch 序列的形式传输的,消费者可以在这些批次到达时
逐步读取。这使它非常适合将查询结果直接流式传输到
可视化或分析工具中,而无需先将整个数据集物化。
要流式传输结果,请通过 ClickHouse 的 HTTP interface 使用
POST 请求发送查询,并将响应作为 Arrow stream 读取。我们通过
output_format_arrow_compression_method
设置禁用 Arrow 输出的压缩,
以便消费者在收到批次时可以直接对其进行解码。
ArrowStream 输出是原始二进制数据,因此我们不将其打印到
终端,而是通过管道将其传给消费者。该 stream 是自描述的 (它携带
自己的 schema) ,因此这里我们将它直接通过管道传给
clickhouse-local,后者使用
--input-format ArrowStream 读取传入批次,并将其作为一张表进行查询。
forex 表很大,因此我们用 WHERE
谓词和 LIMIT 对远程查询加以限制,以使此示例保持简洁:
Response
RecordBatchReader 会在每个记录批次从
服务器流式传输过来后立即返回该批次:
ArrowStream 数据接入
借助 Perspective 实现的实时可视化,请参阅
这篇博客文章
使用 ClickHouse、Apache Arrow 和 Perspective 实现实时流式可视化.
格式设置
ArrowStream 与 Arrow 格式共享相同的格式设置。