StarRocks 外表查询

最近更新时间:2026-04-16 11:28:52

我的收藏

概述

Setats 支持通过 StarRocks 外表方式进行 OLAP 查询。用户可以在 StarRocks 中创建 Setats External Catalog,直接查询 Setats 表的列存快照数据,满足实时报表、交互式分析和明细回查等需求。
说明:
如果需要使用 Setats 服务,那么需要升级 StarRocks 集群版本,请提交工单申请。

前提条件

已创建 Setats 集群并完成 Warehouse 配置。
已部署 StarRocks 集群,并确认 FE / BE 节点能够访问 HDFS / COS 等底层存储。
如果 Warehouse 使用 Hive Catalog,需要额外确认 StarRocks 到 Hive Metastore 的连通性。
如果涉及 Kerberos、CHDFS 或 COS 加速桶,需要提前准备相关网络、凭据和 Hadoop 配置。

场景一:HDFS / Hadoop Catalog

以下示例适用于 Hadoop Catalog / HDFS 场景:
CREATE EXTERNAL CATALOG setats
PROPERTIES (
'type' = 'setats',
'setats.catalog.type' = 'hadoop',
'warehouse' = 'hdfs://<nameservice>/usr/setats',
'dfs.nameservices' = '<nameservice>',
'dfs.ha.namenodes.<nameservice>' = 'nn1,nn2',
'dfs.namenode.rpc-address.<nameservice>.nn1' = '<nn1-host>:4007',
'dfs.namenode.rpc-address.<nameservice>.nn2' = '<nn2-host>:4007',
'dfs.client.failover.proxy.provider.<nameservice>' = 'org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider'
);
如果 EMR 启用了 Kerberos,请根据实际环境补充 Kerberos 相关参数。

场景二:Hive Metastore + COS 加速桶

如果 Setats 使用 Hive Metastore,并且底层数据或元数据依赖 COS 加速桶,可参考以下配置:
CREATE EXTERNAL CATALOG setats
PROPERTIES
(
"type" = "setats",
"setats.catalog.type" = "hive",
"hive.metastore.uris" = "thrift://172.28.39.128:7004,thrift://172.28.39.118:7004",
'tencent.cos.access_key' = '',
'tencent.cos.secret_key' = '',
'tencent.cos.endpoint' = ''
);

Catalog 参数说明

参数
说明
type
Catalog 类型,固定为 setats
setats.catalog.type
Setats Catalog 类型,如 hadoop
warehouse
Setats Warehouse 地址
dfs.nameservices
HDFS NameService 名称
dfs.ha.namenodes.<nameservice>
HA NameNode 列表
dfs.namenode.rpc-address.<nameservice>.nn*
NameNode RPC 地址
dfs.client.failover.proxy.provider.<nameservice>
HDFS HA Failover Provider
tencent.cos.access_key/tencent.cos.secret_key
COS 访问凭据; 需要有 QcloudCOSListOnly 和 QcloudCOSDataReadOnly 权限
tencent.cos.endpoint
COS 访问域名, 比如 cos.ap-guangzhou.myqcloud.com

查询数据

切换 Catalog 查询

SET CATALOG setats;
SHOW DATABASES;
USE `testdb`;
SELECT * FROM demo_setats_table1;

全限定名查询

SELECT *
FROM `setats`.`testdb`.`demo_setats_table1`;