Lakehouse 联邦查询指南(External Catalog)
概述
联邦查询(Federation Query)允许 Lakehouse 直接查询外部数据目录(如 Hive Metastore、Databricks Unity Catalog)中的数据,无需迁移或复制数据。通过
CREATE EXTERNAL CATALOG,你可以将外部数据源映射为 Lakehouse 中的 Catalog,使用标准 SQL 进行跨系统查询。本指南按业务场景分类,帮助你快速掌握联邦查询的配置方法。
涉及的 SQL 命令
| 命令 | 用途 | 适用场景 |
|---|---|---|
| 创建外部目录 | 挂载 Hive/Databricks 等外部 Catalog |
| 查看所有 Catalog | 确认外部 Catalog 已注册 |
| 查看外部 Schema | 探索外部数据库结构 |
| 查看外部表 | 探索外部表列表 |
| 查询外部表 | 跨系统联邦查询 |
前置准备
以下示例假设已创建对应的 Storage Connection 和 Catalog Connection:
创建 Hive 外部 Catalog
使用
CREATE EXTERNAL CATALOG 配合 Catalog Connection 挂载 Hive 数据目录。
参数说明:
:外部 Catalog 在 Lakehouse 中的名称。hive_prod
:预先创建的 Catalog Connection,包含 HMS 地址和认证信息。hive_catalog_conn
查询外部 Catalog 数据
使用三层命名空间(
catalog.schema.table)直接查询外部数据。
执行说明:
- Lakehouse 会向外部 Catalog 请求元数据,并直接从外部存储(如 OSS/S3)读取数据文件。
- 查询语法与本地表完全一致,支持 JOIN、聚合、窗口函数等。
查看外部 Schema 和表
使用
SHOW 命令探索外部目录的结构。
返回信息:
| workspace_name | created_time | category |
|---|---|---|
| databricks_main_catalog | 2025-11-20 12:00:49 | EXTERNAL |
| quick_start | 2025-01-15 10:27:21 | MANAGED |
| ... | ... | ... |
删除外部 Catalog
使用
DROP CATALOG 删除外部目录映射。
清理测试数据
完成联邦查询验证后,建议清理外部 Catalog 映射:
注意事项
- 只读访问:External Catalog 仅支持
查询,不支持 DML 操作(INSERT/UPDATE/DELETE)。SELECT - 网络延迟:查询外部数据需跨网络读取文件,性能通常低于本地表。建议将频繁查询的数据同步到 Lakehouse。
- 认证过期:External Catalog 依赖 Catalog Connection 的认证信息(如 OAuth Token)。认证过期后会报
,需重新创建 Connection。Unauthenticated: invalid_client - Schema 同步:外部表结构变更不会自动同步到 Lakehouse。如需获取最新 Schema,可重建 External Catalog 或刷新元数据。
- 数据类型映射:外部系统的数据类型会映射为 Lakehouse 对应类型,部分复杂类型可能不支持。
- 权限要求:创建 External Catalog 需要
角色,查询需要对 Catalog 具有instance_admin
权限。USAGE
相关文档
联系我们
