Lakehouse 联邦查询指南(External Catalog)

概述

联邦查询(Federation Query)允许 Lakehouse 直接查询外部数据目录(如 Hive Metastore、Databricks Unity Catalog)中的数据,无需迁移或复制数据。通过

CREATE EXTERNAL CATALOG
CREATE EXTERNAL CATALOG
,你可以将外部数据源映射为 Lakehouse 中的 Catalog,使用标准 SQL 进行跨系统查询。本指南按业务场景分类,帮助你快速掌握联邦查询的配置方法。

涉及的 SQL 命令

命令用途适用场景
CREATE EXTERNAL CATALOG
CREATE EXTERNAL CATALOG
创建外部目录挂载 Hive/Databricks 等外部 Catalog
SHOW CATALOGS
SHOW CATALOGS
查看所有 Catalog确认外部 Catalog 已注册
SHOW SCHEMAS IN ext_catalog
SHOW SCHEMAS IN ext_catalog
查看外部 Schema探索外部数据库结构
SHOW TABLES IN ext_catalog.schema
SHOW TABLES IN ext_catalog.schema
查看外部表探索外部表列表
SELECT * FROM ext_catalog.schema.table
SELECT * FROM ext_catalog.schema.table
查询外部表跨系统联邦查询

前置准备

以下示例假设已创建对应的 Storage Connection 和 Catalog Connection:

-- 确保已创建 Storage Connection(指向外部存储) -- 确保已创建 Catalog Connection(指向 Hive Metastore 或 Databricks)


创建 Hive 外部 Catalog

使用

CREATE EXTERNAL CATALOG
CREATE EXTERNAL CATALOG
配合 Catalog Connection 挂载 Hive 数据目录。

-- 创建 Hive 外部 Catalog CREATE EXTERNAL CATALOG hive_prod CONNECTION hive_catalog_conn;

参数说明

  • hive_prod
    hive_prod
    :外部 Catalog 在 Lakehouse 中的名称。
  • hive_catalog_conn
    hive_catalog_conn
    :预先创建的 Catalog Connection,包含 HMS 地址和认证信息。

查询外部 Catalog 数据

使用三层命名空间(

catalog.schema.table
catalog.schema.table
)直接查询外部数据。

-- 查询外部表 SELECT customer_id, SUM(amount) as total_spent FROM databricks_main_catalog.sales_db.customer_orders GROUP BY customer_id LIMIT 10;

执行说明

  • Lakehouse 会向外部 Catalog 请求元数据,并直接从外部存储(如 OSS/S3)读取数据文件。
  • 查询语法与本地表完全一致,支持 JOIN、聚合、窗口函数等。

查看外部 Schema 和表

使用

SHOW
SHOW
命令探索外部目录的结构。

-- 查看所有 Catalog SHOW CATALOGS;

返回信息

workspace_namecreated_timecategory
databricks_main_catalog2025-11-20 12:00:49EXTERNAL
quick_start2025-01-15 10:27:21MANAGED
.........

-- 查看外部 Catalog 下的 Schema SHOW SCHEMAS IN databricks_main_catalog; -- 查看外部 Schema 下的表 SHOW TABLES IN databricks_main_catalog.default;


删除外部 Catalog

使用

DROP CATALOG
DROP CATALOG
删除外部目录映射。

-- 删除外部 Catalog DROP CATALOG IF EXISTS hive_prod;


清理测试数据

完成联邦查询验证后,建议清理外部 Catalog 映射:

-- 删除外部 Catalog DROP CATALOG IF EXISTS hive_prod;


注意事项

  1. 只读访问:External Catalog 仅支持
    SELECT
    SELECT
    查询,不支持 DML 操作(INSERT/UPDATE/DELETE)。
  2. 网络延迟:查询外部数据需跨网络读取文件,性能通常低于本地表。建议将频繁查询的数据同步到 Lakehouse。
  3. 认证过期:External Catalog 依赖 Catalog Connection 的认证信息(如 OAuth Token)。认证过期后会报
    Unauthenticated: invalid_client
    Unauthenticated: invalid_client
    ,需重新创建 Connection。
  4. Schema 同步:外部表结构变更不会自动同步到 Lakehouse。如需获取最新 Schema,可重建 External Catalog 或刷新元数据。
  5. 数据类型映射:外部系统的数据类型会映射为 Lakehouse 对应类型,部分复杂类型可能不支持。
  6. 权限要求:创建 External Catalog 需要
    instance_admin
    instance_admin
    角色,查询需要对 Catalog 具有
    USAGE
    USAGE
    权限。

相关文档

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