跳转到主要内容
ArrowFlight 表引擎使 ClickHouse 能够通过 Apache Arrow Flight 协议读取和写入远程数据集。 该集成使 ClickHouse 能够以高性能通过列式 Arrow 格式与外部支持 Flight 的服务器交互。

创建表

CREATE TABLE [IF NOT EXISTS] [db.]table_name (name1 [type1], name2 [type2], ...)
    ENGINE = ArrowFlight('host:port', 'dataset_name' [, 'username', 'password']);
引擎参数
  • host:port — 远程 Arrow Flight 服务器的地址。如果省略端口,则使用默认端口 8815String
  • dataset_name — Flight 服务器上的数据集标识符 (具体用作 PATH 描述符还是用于 SELECT * 查询,取决于 arrow_flight_request_descriptor_type 设置) 。String
  • username — 用于基本 HTTP 身份验证的用户名。String
  • password — 用于基本 HTTP 身份验证的密码。String
如果省略 usernamepassword,则不使用身份验证 (仅当 Arrow Flight 服务器允许未身份验证访问时才可行) 。 列列表是可选的——如果省略,则会通过 GetSchema 从远程 Arrow Flight 服务器推断 schema。

命名集合

该引擎支持通过命名集合存储连接参数:
CREATE TABLE remote_flight_data
    ENGINE = ArrowFlight(named_collection_name);
命名集合参数:
参数必填默认值说明
host or hostname""服务器主机名。
port服务器端口。
dataset数据集名称或描述符。
use_basic_authenticationtrue启用基本身份验证。
user or username启用身份验证时用于身份验证的用户名。
password""用于身份验证的密码。
enable_sslfalse启用 TLS 加密。
ssl_ca""用于 TLS 验证的 CA 证书文件路径。
ssl_override_hostname""覆盖 TLS 验证时检查的主机名。

设置

  • arrow_flight_request_descriptor_type — 控制向 Flight 服务器发送数据集名称的方式。可能的值:path (默认值,以 PATH 描述符形式发送) 或 command (以 CMD 描述符形式发送,内容为 SELECT * FROM <dataset>) 。对于需要 SQL 命令的 Flight 服务器 (例如 Dremio) ,请使用 command

使用示例

从远程 Arrow Flight 服务器读取数据:
CREATE TABLE remote_flight_data
(
    id UInt32,
    name String,
    value Float64
) ENGINE = ArrowFlight('127.0.0.1:9005', 'sample_dataset');

SELECT * FROM remote_flight_data ORDER BY id;
┌─id─┬─name────┬─value─┐
│  1 │ foo     │ 42.1  │
│  2 │ bar     │ 13.3  │
│  3 │ baz     │ 77.0  │
└────┴─────────┴───────┘
向远程 Arrow Flight 服务器插入数据:
INSERT INTO remote_flight_data VALUES (4, 'qux', 99.9);

注意事项

  • 如果在 CREATE TABLE 语句中指定了列,则这些列必须与 Flight 服务器 返回的 schema 一致。
  • 如果省略列,则会自动根据远程 server 推断 schema。
  • 支持读取 (SELECT) 和写入 (INSERT) 。
  • arrow_flight_request_descriptor_type 设置用于控制将数据集名称作为 PATH 描述符发送,还是作为封装 SELECT * 查询的 CMD 描述符发送。

另请参见

最后修改于 2026年6月29日