联邦查询

联邦查询让你用标准 SQL 直接查询外部数据系统(Hive、Databricks、Iceberg、Snowflake 等)中的数据,无需迁移或复制数据。通过

CREATE EXTERNAL CATALOG
CREATE EXTERNAL CATALOG
,将外部数据目录映射到 Lakehouse,实现跨系统统一查询。


支持的外部数据源

外部系统连接方式典型场景
Apache HiveHive Metastore URIs原有 Hive 数仓原地加速,替换 Presto/Trino
Databricks Unity CatalogDatabricks API跨平台联邦分析,Databricks 数据不搬迁
Iceberg REST CatalogIceberg REST API查询任意兼容 Iceberg REST 协议的数据湖
Snowflake Open CatalogIceberg REST API + OAuth访问 Snowflake 管理的 Iceberg 表

核心概念

访问外部数据有三种独立方式,适用场景不同:

External Catalog(推荐)

将外部数据系统(Hive/Databricks/Snowflake/Iceberg REST)映射为顶层目录,其下的 Schema 和 Table 自动对应外部系统的结构:

External Catalog ← 顶层目录,映射外部系统 └── External Schema ← 对应外部系统中的 Schema/Database └── External Table ← 对应外部系统中的实际表

查询使用三层命名:

external_catalog.schema.table
external_catalog.schema.table

SELECT * FROM databricks_catalog.table_types_demo.orders_external;

支持:Hive、Databricks Unity Catalog、Iceberg REST(含 Snowflake Open Catalog)

External Schema(单独使用)

不通过 External Catalog,直接将外部 Hive Database 挂载到当前 Workspace 的内部 Catalog 下,使用两层命名

schema.table
schema.table
(等价于
<当前内部catalog>.schema.table
<当前内部catalog>.schema.table
)。HMS 直接映射——整个 Database 下所有表一次性可查,新增表自动可见,无需逐表定义。

SELECT * FROM hive_orders.order_detail LIMIT 100;

支持:Hive(OSS/COS/GCS/HDFS)。只读,不支持 DML。

External Table(单独使用)

当前 Workspace 内部 Catalog 的普通 Schema 下创建指向外部存储的单张表,使用两层命名

schema.table
schema.table
。与 External Schema 的区别是:可以自定义列名和类型,支持重命名和修改注释。

CREATE EXTERNAL TABLE my_schema.delta_orders LOCATION 's3://bucket/orders/' USING DELTA;

支持:Kafka、Delta Lake、Hudi。只读,不支持 DML。

三种方式对比

External CatalogExternal Schema(单独)External Table(单独)
所在 Catalog独立的外部 Catalog当前 Workspace 内部 Catalog当前 Workspace 内部 Catalog
命名方式三层
catalog.schema.table
catalog.schema.table
两层
schema.table
schema.table
两层
schema.table
schema.table
适用场景跨平台联邦分析Hive 整库挂载融入工作空间单张外部表自定义映射
支持数据源Hive、Databricks、Iceberg REST、SnowflakeHiveKafka、Delta Lake、Hudi
表结构定义自动映射外部系统自动映射 HMS手动定义列名和类型
新增外部表可见需重新映射自动可见逐表创建

选型参考:External Catalog vs External Schema


快速开始

External Catalog 依赖预先创建的 Catalog Connection(存储连接 → Catalog Connection → External Catalog)。完整配置步骤见 外部对象使用指南

创建完成后,使用标准 SQL 查询:

-- 1. 创建 External Catalog(需先创建 Catalog Connection) CREATE EXTERNAL CATALOG hive_prod CONNECTION hive_catalog_conn; -- 2. 查看所有 Catalog(含外部 Catalog) SHOW CATALOGS; -- category = 'EXTERNAL' 表示联邦目录 -- 3. 查看外部 Catalog 中的 Schema 和表 SHOW SCHEMAS IN hive_prod; SHOW TABLES IN hive_prod.default; -- 4. 直接查询,无需迁移数据 SELECT * FROM hive_prod.default.orders LIMIT 100; -- 5. 跨系统 JOIN SELECT o.order_id, u.name FROM hive_prod.default.orders o JOIN my_lakehouse_table u ON o.user_id = u.id;


本章内容

页面说明
外部对象使用指南External Catalog / Schema / Table 的创建、查询、管理完整操作
访问 Snowflake OpenCatalog Iceberg 表通过 Iceberg REST API 联邦查询 Snowflake 管理的 Iceberg 数据
Databricks Unity Catalog 联邦查询实践从零配通的完整操作路径,含实测验证和常见报错排查

相关文档

联系我们
预约咨询
微信咨询
电话咨询
邮件咨询