Apache Arrow Flight 接口
ClickHouse 支持集成 Apache Arrow Flight 协议——一个为在 gRPC 之上使用 Arrow IPC 格式进行高效列式数据传输而设计的高性能 RPC 框架。
通过此接口,Flight SQL 客户端可以查询 ClickHouse,并以 Arrow 格式获取结果,为分析型工作负载提供高吞吐量和低延迟。
功能
- 通过 Arrow Flight SQL 协议执行 SQL 查询
- 以 Apache Arrow 格式流式返回查询结果
- 与支持 Arrow Flight 的 BI 工具和自定义数据应用程序集成
- 通过 gRPC 实现轻量且高效的通信
限制
Arrow Flight 接口目前为实验性功能,仍在积极开发中。已知限制包括:
- 对 ClickHouse 特有的复杂 SQL 功能支持有限
- 部分 Arrow Flight SQL 元数据操作尚未实现
- 参考实现中未内置身份验证或 TLS 配置
如果您遇到兼容性问题或希望参与贡献,请在 ClickHouse 仓库中创建一个 issue。
运行 Arrow Flight 服务器
要在自托管的 ClickHouse 实例中启用 Arrow Flight 服务器,请在服务器的配置文件中加入如下配置:
重启 ClickHouse 服务器。启动成功后,您应当能看到类似下面的日志输出:
通过 Arrow Flight SQL 连接 ClickHouse
可以使用任何支持 Arrow Flight SQL 的客户端。例如,使用 pyarrow:
兼容性
Arrow Flight 接口与支持 Arrow Flight SQL 的工具兼容,包括使用以下技术构建的自定义应用程序:
- Python (
pyarrow) - Java (
arrow-flight) - C++ 以及其他兼容 gRPC 的语言
如果您的工具提供原生 ClickHouse 连接器(例如 JDBC、ODBC),除非在性能或格式兼容性方面有明确需要使用 Arrow Flight,否则应优先选择原生连接器。
查询取消
可以通过在客户端关闭 gRPC 连接来取消长时间运行的查询。计划在未来提供对更高级取消功能的支持。
更多详情,参见: