通过 Iceberg REST Catalog 访问 Databricks Iceberg 表
云器 Lakehouse 通过 Iceberg REST Catalog 协议访问 Databricks Unity Catalog 中的 Iceberg 格式表,元数据实时同步,数据留在原 S3 存储不做搬迁。
前置条件
- Databricks 工作区:支持 Unity Catalog
- 云器 Lakehouse 实例:与 Databricks 数据存储(S3)在同一云平台(均为 AWS)
- Iceberg 表数据存储在用户自己控制的 S3 bucket 中,并为 Lakehouse 配置跨账号读取权限
- Databricks Service Principal:已获取 OAuth Client ID 和 Secret
Databricks 侧准备
1. 获取 OAuth 凭据
https://accounts.cloud.databricks.com → Service principals → 创建或选择一个 SP → Credentials & secrets → 记录 Application ID(Client ID)和 Secret。
2. 授予 Catalog 权限
3. 开启 Metastore External Data Access
Databricks Workspace → Catalog → 齿轮图标 → Metastore → External data access → 打开。
4. Iceberg 表格式要求(关键)
| 表格式 | SHOW TABLES | SELECT | 说明 |
|---|---|---|---|
| Iceberg | ✅ | ✅ | 唯一支持的类型 |
| Delta | ✅ | ❌ | 元数据可见,无法查询 |
| Parquet / CSV / JSON | ✅ | ❌ | 同上 |
在 Databricks 中建 Iceberg 表:
5. S3 存储要求
Iceberg 表数据必须在用户控制的 S3 bucket 中。Databricks 托管存储(
s3://dbstorage-prod-*)中的表仅元数据可访问,数据查询会报 S3 403 Forbidden。
同时 Lakehouse 的 AWS 账号需要对 S3 bucket 具有读权限。Lakehouse 的 AWS 账号 ID 可通过技术支持获取。
创建 Catalog Connection
参数说明
| 参数 | 必填 | 说明 |
|---|---|---|
| 是 | 固定为 ,不要加 |
| 是 | Iceberg REST API 端点,注意新路径 ,不是旧路径 |
| 是 | Databricks OAuth token 端点。与 URI 不同路径,不填会报 |
| 是 | S3 bucket 所在 region,不是 Databricks workspace region |
| 是 | Service Principal 的 Application ID(UUID 格式) |
| 是 | Service Principal 的 OAuth Secret |
| 是 | 固定为 |
| 是 | Databricks Unity Catalog 中的 catalog 名称(如 、) |
创建 External Catalog
验证
常见错误
Credential was not sent or was of an unsupported type
Credential was not sent or was of an unsupported typeOAUTH_SERVER_URI 未设置。Databricks 的 OAuth token 端点和 Iceberg REST 端点不同路径,必须单独指定。
Legacy Iceberg endpoints deprecated
URI 使用了旧路径 /iceberg。改为新路径 /iceberg-rest。
Must provide 'warehouse' parameter
WAREHOUSE 未设置。Databricks 新的 Iceberg REST API 要求显式指定 catalog 名称。
S3 403 Forbidden
Iceberg 表数据存在 Databricks 托管存储(
s3://dbstorage-prod-*)中,Lakehouse 无权限读取。需将表数据迁移至用户控制的 S3 bucket 并配置跨账号权限。
table or view not found(SELECT 时)
该表不是 Iceberg 格式(可能是 Delta / Parquet / CSV)。SHOW TABLES 能显示所有格式,但只有 Iceberg 格式能通过 SELECT 查询。
管理
相关文档
- 创建 Catalog Connection — 完整 DDL 语法
- Databricks Unity Catalog 联邦查询实践 — TYPE DATABRICKS 方式
- External Catalog 联邦查询
联系我们
