面向 Unity Catalog 的配置方法
Databricks Unity Catalog 是 Databricks 平台中的统一数据治理与协作功能,能够提供集中化的元数据管理、安全级别和数据访问控制。它支持跨云和工作区统一的数据存储、审计跟踪、细致的数据权限管理(列级与细粒度访问控制)以及支持分析工具和机器学习工作流的数据共享,是简化数据治理、实现跨团队协作的强大工具。
Delta 格式(Delta Lake)是由 Databricks 推出的开源存储格式,基于 Apache Parquet 构建,专为大规模数据工程和分析工作负载设计。它解决了传统数据湖的一些痛点,如数据一致性、事务支持和性能优化。Delta 格式支持 ACID 事务,提供数据版本控制(时光回溯)功能,同时兼容流式和批处理数据。
ProtonBase 可以通过外部表方式与 Unity Catalog 元数据对接,支持对 Delta 格式存储的数据湖数据实现加速访问。
安装扩展
安装extension,仅需要安装一次,如果已经安装过,可以忽略。
CREATE EXTENSION delta_fdw;
创建Unity Catalog外部服务器
CREATE SERVER <server_name> FOREIGN DATA WRAPPER delta_fdw
OPTIONS (
unity_catalog_endpoint '<endpoint_url>',
region 'region-name',
catalog '<catalog_name>'
);
unity_catalog_endpoint
, Unity Catalog 对外服务的 APIregion
, Unity Catalog 服务所在云 Regioncatalog
, 数据表格文件的根目录
针对不同的 Catalog,需要创建不同的 foreign server。
-- 示例
CREATE SERVER delta_oregon FOREIGN DATA WRAPPER delta_fdw OPTIONS (
unity_catalog_endpoint 'https://dbc-xxx.cloud.databricks.com',
region 'us-west-2',
catalog 'main'
);
创建用户映射
为本地用户账号授予对应的对象存储的访问权限。
CREATE USER MAPPING FOR public SERVER delta_server
OPTIONS (
token 'token',
access_id 'id',
access_key 'key'
);
创建外表
导入 Databricks 中的delta表的元数据。
IMPORT FOREIGN SCHEMA remote_schema_name
{ LIMIT TO (table_name [, ...])
| EXCEPT (table_name [, ...]) }
FROM SERVER server_name
INTO local_schema_name
[ OPTIONS (option 'value' [, ...]) ];
其中 remote_schema_name 对应 Unity Catalog 中的 schema,table_name 对应 Unity Catalog 中的 table,server_name 对应上述定义的 foreign server(注,不同 Catalog 对应不同 foreign server)
-- 将 default schema 下的 test1 的元数据导入为外表
import foreign schema "default" LIMIT TO (test1) from server delta_server into public;
select * FROM test1;