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 timeout 10 metadata_write_timeout_secHTTP 元数据同步,客户端 socket write timeout 10 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')
...