跳到主要内容

Doris Catalog

Doris Catalog 允许用户通过 HTTP 协议和 Arrow Flight 协议进行跨多个 Doris 集群的数据访问。

本文档介绍如何配置远程 Doris 集群连接并进行查询。

备注

该功能自 4.0.2 版本支持。

这是一个实验性功能。

适用场景

场景说明
联邦查询Doris 通过谓词下推与 Arrow Flight 协议,实现对多个独立 Doris 集群的关联查询

配置 Catalog

语法

CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
'type' = 'doris', -- required
'fe_http_hosts' = 'http://<fe-host1>:<fe-http-port>,<fe-host2>:<fe-http-port>', -- required
'fe_arrow_hosts' = '<fe-host1>:<fe-arrow-flight-port>,<fe-host2>:<fe-arrow-flight-port>', -- required
'user' = '', -- required
'password' = '', -- required
{QueryProperties},
{HttpClientProperties},
{CommonProperties}
);
  • fe_http_hosts

    远端 Doris 集群 FE HTTP 服务端点列表。

  • fe_arrow_hosts

    远端 Doris 集群 FE Arrow Flight 服务端点列表。

  • {QueryProperties}

    可选属性

    参数名称说明默认值
    enable_parallel_result_sink开启后,本地 Doris BE 节点将并行地从远端 Doris 集群各 BE 节点拉取数据。true
    query_retry_count向远端 Doris 发送查询请求失败的最大重试次数。(不包含请求被接受后,远端 Doris 异步执行过程中可能发生的失败)3
    query_timeout_sec向远端 Doris 发送查询的超时时间。(不包含请求被接受后,远端 Doris 异步执行时间)15
    compatible用于在访问版本低于本集群的远端 Doris 时,尝试兼容其元数据格式。集群版本一致时无需开启。false
  • {HttpClientProperties}

    HttpClientProperties 部分用于配置 HTTP Client 相关参数,该 Client 用于发送 HTTP 请求同步远端集群元数据。这些都是可选参数。

    参数名称说明默认值
    metadata_http_ssl_enabledHTTP 元数据同步,是否启用 SSL/TLS 加密通信。false
    metadata_sync_retry_countHTTP HTTP 请求失败最大重试次数3
    metadata_max_idle_connectionsHTTP 元数据同步,客户端最大空闲连接数5
    metadata_keep_alive_duration_secHTTP 元数据同步,客户端空闲连接存活时长300
    metadata_connect_timeout_secHTTP 元数据同步,客户端 TCP 连接超时时间10
    metadata_read_timeout_secHTTP 元数据同步,客户端 socket read timeout10
    metadata_write_timeout_secHTTP 元数据同步,客户端 socket write timeout10
    metadata_call_timeout_secHTTP 元数据同步,客户端 HTTP 请求总超时时间10
  • {CommonProperties}

    CommonProperties 部分用于填写通用属性。请参阅 数据目录概述 中【通用属性】部分。

列类型映射

Doris 外表类型与本地 Doris 类型完全相同。

查询操作

基础查询

配置好 Catalog 后,可以通过以下方式查询 Catalog 中的表数据:

-- 1. switch to catalog, use database and query
SWITCH doris_ctl;
USE doris_db;
SELECT * FROM doris_tbl LIMIT 10;

-- 2. use doris database directly
USE doris_ctl.doris_db;
SELECT * FROM doris_tbl LIMIT 10;

-- 3. use full qualified name to query
SELECT * FROM doris_ctl.doris_db.doris_tbl LIMIT 10;

查询优化

Doris Catalog 访问数据源时,Doris 会尽量将谓词或函数条件下推并拼接到生成的 SQL 中。可以通过 EXPLAIN SQL 查看到生成的 SQL 语句。

...
| 0:VREMOTE_DORIS_SCAN_NODE(68) |
| TABLE: test.test_time |
| QUERY: SELECT /*+ SET_VAR(enable_parallel_result_sink=true) */ `timestamp` FROM test.test_time WHERE (timestamp > '2025-11-03 00:00:00.000') |
| PREDICATES: (timestamp[#0] > '2025-11-03 00:00:00.000')
...