跳至主要内容

Databricks Unity Catalog:初学者指南

通过本入门与设置指南,了解 Databricks Unity Catalog 的基础知识。
· 10分钟 阅读

使用 AI 探索

您刚刚听说了 Databricks Unity Catalog,现在正想知道它到底是什么,以及它在现代数据管理中扮演什么角色。

本综合指南将向您介绍 Databricks Unity Catalog,并帮助您理解它在现代数据栈中的数据分析工作中的重要性。

什么是 Databricks Unity Catalog?

Databricks Unity Catalog 是一项统一的数据治理服务,用于简化并优化分析工作负载的数据管理。它将各类商业智能工具、数据库、数据仓库和数据湖所使用的不同类型的元数据汇聚到一个中心位置。这促进了跨系统的互操作性,使查找和访问结构化与非结构化数据更加容易。

随着组织扩展其数据运营,在多个数据平台上管理访问、治理与合规性会变得复杂。Unity Catalog 通过提供统一的元数据、访问控制和血缘追踪层来应对这一挑战,从而降低运维开销。

这种集中式数据治理方法在共享常见数据产品时带来一些益处,例如:

Databricks Unity Catalog 的核心组件包括:

  • Metastore:用于存储元数据的存储层,简化数据发现并改进数据血缘。
  • Catalog:用于存储、管理与发现数据资产的中央存储库。
  • Schema:在 Databricks Unity Catalog 中用于组织和管理数据资产的数据模型。
  • Granularity:元数据追踪的明细级别。它允许团队在不同层级(目录、架构、表,甚至列)上管理访问,确保对数据资产的细粒度控制。"。
  • 表、视图与卷:这些是 Databricks Unity Catalog 中用于表示结构化与非结构化数据的基础数据对象。
  • 数据血缘:对数据从源到目的地的流动进行可视化表示,有助于跟踪变更并确保数据完整性。

这些组件协同工作,提供全面的数据治理解决方案,简化数据管理并促进团队间协作。

Unity Catalog 的优势

使用 Databricks Unity Catalog 有多项关键优势,概述如下:

1. 数据治理与合规

Databricks Unity Catalog 为存储与管理元数据提供了集中位置,确保跨不同系统的数据治理与合规。

例如,Unity Catalog 会为生产环境中的机器学习模型提供潜在 PII(个人可识别信息)检测警报。借助数据血缘,这些模型可以轻松回滚。

这有助于组织维护数据完整性、遵守法规并降低风险。

2. 协作与自助分析

Unity Catalog 通过提供用于存储数据资产的中心位置来促进跨团队协作。这消除了信息孤岛并加强跨职能沟通,推动自助式分析。

数据分析师与业务用户可以轻松发现并访问相关数据资产,从而减少花在数据准备上的时间。

Unity Catalog 的关键用例

Unity Catalog 可通过多种方式落地实施:

1. 数据访问控制与安全

Databricks Unity Catalog 支持对数据资产实施细粒度访问控制,确保数据仅可由授权用户访问。它还允许在团队之间安全共享敏感数据。

2. 数据发现与血缘

Unity Catalog 的元数据管理能力支持高效的数据发现,并提供数据从源头到目的地的可视化表示,有助于追踪数据集变更,便于审计与故障排查。

3. 简化合规与审计

借助集中存放的所有数据资产及其血缘,Unity Catalog 简化了合规报告与审计流程,降低确保法规合规所需的时间与精力。

如何在 Databricks 中启用 Unity Catalog

现在,让我们通过一个简单的设置教程来上手 Unity Catalog:

先决条件

在启用并使用 Unity Catalog 之前,请确保满足以下要求:

Databricks 高级版或企业版方案

Unity Catalog 仅支持 Databricks 的 Premium 或 Enterprise 等级。请确保您的 Databricks 工作区使用其中一种方案。

适当的权限

  • 账户管理员:您必须在 Databricks 中拥有 Account Admin 角色,才能在账户级别设置与管理 Unity Catalog。
  • 工作区管理员:您应当是要启用 Unity Catalog 的该工作区中的 Workspace Admin。

Metastore 可用性

Unity Catalog 需要在账户级别配置 metastore。如果尚未创建,则需要在设置过程中创建。对于试用版 Databricks 账户,系统会为您预先创建带有 metastore 的目录。

支持的云平台

当前,Unity Catalog 支持:

  • AWS
  • Azure
  • GCP

请确保您在上述云中的受支持 Databricks 环境中使用。

托管存储或外部位置

决定您是要使用托管表(托管存储),还是创建引用外部位置(如 S3、ADLS 或 GCS)数据的外部表。不同方式可能涉及不同的权限要求。

启用 Unity Catalog:分步指南

浏览 Databricks 设置

  1. 登录 Databricks 账户控制台

databricks console log in

  1. 进入 Catalog 页面
    • 在(账户控制台的)左侧导航窗格中,查找Catalog(取决于您的 Databricks 版本)。
    • 在 Databricks 试用版中,应已创建 Serverless Starter Warehouse 的 metastore 与目录。
  2. 启动 SQL warehouse 计算
    • 在左侧导航窗格中选择SQL Warehouses,然后点击右侧的播放图标启动 Serverless Starter Warehouse。

  1. 分配到工作区
    • 在目录配置中的Workspaces下,附加应使用该目录的工作区。

配置 Unity Catalog

  1. 分配权限
    • 作为管理员,在 Databricks 工作区左侧边栏进入Catalog 。
    • 选择您想要管理的工作区。
    • 点击Permissions 选项卡来设置权限(例如,谁可以创建目录、架构和表)。默认情况下,账户管理员或工作区管理员可能拥有全部权限,但您可以将权限委派给其他用户或用户组。

  1. 创建目录和架构(如需)
    • 您可以为不同团队、项目或数据域创建更多目录与架构。这通常通过 SQL 命令完成(如下所示)。
-- Creates a new catalog named "demo_catalog"
CREATE CATALOG IF NOT EXISTS demo_catalog
COMMENT 'This catalog is created for Unity Catalog demo';
  1. 配置外部位置(可选)如果您需要存放在外部位置的外部表:
    • 在 Unity Catalog 中创建指向云存储(S3、ADLS 或 GCS)的外部位置。
    • 通过 Unity Catalog 向用户或用户组授予对这些位置的读写权限。

示例代码与用法

以下是当 Unity Catalog 在您的工作区中配置完成后,可使用的一些 Databricks 笔记本/SQL 命令示例。

您可以在 Databricks 笔记本或工作区内的 SQL 编辑器中运行它们。

为目录授予权限

为目录授予权限可确保特定用户组能够访问并与其中的数据交互。然而,仅有 USAGE 并不允许用户查询数据——它只是让用户看到该目录的存在。若要允许完整交互,您需要在架构或表级别授予其他权限。

例如,要让数据工程师访问某个目录:

-- Grant USAGE to a specific group on the newly created catalog
GRANT USAGE ON CATALOG demo_catalog TO data_engineers_group;

如果他们还需要在该目录中创建架构:

GRANT CREATE ON CATALOG demo_catalog TO data_engineers_group;

在目录内创建架构(数据库)

Unity Catalog 中的架构用于在目录内组织表与视图,类似于传统关系型数据库系统中数据库承载表的方式。使用 IF NOT EXISTS 可避免在架构已存在时产生错误。

要在 demo_catalog 中创建一个用于分析数据的架构:

CREATE SCHEMA IF NOT EXISTS demo_catalog.analytics
COMMENT 'Schema for analytics data';

创建后,您可能需要为特定用户授予权限:

GRANT USAGE ON SCHEMA demo_catalog.analytics TO data_analysts_group;

这允许 data_analysts_group 看到该架构,但尚不能查询其中的表。

创建托管表

托管表完全由 Unity Catalog 控制,这意味着 Databricks 会处理存储与元数据追踪。这简化了管理,但也意味着删除表时数据会一并被删除。

要创建一个用于销售数据的托管表:

USE CATALOG demo_catalog;
USE SCHEMA analytics;

CREATE TABLE IF NOT EXISTS sales_data (
  transaction_id STRING,
  product_id STRING,
  quantity INT,
  price DECIMAL(10,2),
  transaction_date DATE
)
COMMENT 'Managed table for sales data';

为表授予权限

为表授予权限可确保用户能够查询或修改数据。SELECT 权限允许用户读取数据,但不能修改。

要允许数据科学家读取销售表:

GRANT SELECT ON TABLE demo_catalog.analytics.sales_data TO data_scientists_group;
 

如果他们需要插入新记录,请授予 INSERT:

GRANT INSERT ON TABLE demo_catalog.analytics.sales_data TO data_scientists_group;
 

若需完全控制(读、写、修改),请使用:

GRANT ALL PRIVILEGES ON TABLE demo_catalog.analytics.sales_data TO data_scientists_group;

外部位置设置

如果您有外部数据位置(例如 AWS 上的 S3),可以在 Unity Catalog 中创建一个外部位置对象:

-- Create an external location named "demo_external_location"
CREATE EXTERNAL LOCATION demo_external_location
URL 's3://my-demo-bucket/my-path/'
WITH CREDENTIAL my_storage_credential
COMMENT 'External location for demo data';

-- Grant read and write privileges to a group
GRANT READ, WRITE ON EXTERNAL LOCATION demo_external_location
TO data_engineers_group;

Databricks Unity Catalog 架构

Databricks Unity Catalog 构建于开源项目Apache Spark 之上,后者为大规模数据处理提供分布式计算平台。它使用Hive Metastore 存储关于数据集与表的元数据,从而实现高效的管理与查询性能。

Unity Catalog 的架构包含三个主要组件:

  1. 元数据存储(Metadata Store):用于存储与数据集、表、外部位置及其他对象相关的全部元数据。
  2. 目录(Catalog):作为元数据存储与计算层之间的接口。它提供存储于元数据存储中的所有元数据的统一视图,便于用户访问与查询数据。
  3. 工作区(Workspaces):工作区是可安全存储和管理数据的虚拟位置。它们通过提供数据访问与操作的中心位置,便于团队间协作。

databricks components

来源:Databricks

借助 Databricks Unity Catalog,用户无需关心底层基础设施即可轻松管理和查询数据。用户还可以通过向他人授予特定权限(例如读写权限)来开展协作,权限对象可以是不同的数据集或表。

要授予这些权限,用户可以使用类似“GRANT”的 SQL 命令来指定哪些用户或用户组可以访问特定数据。这确保只有授权人员才能访问敏感信息。

Unity Catalog 如何与现有数据系统集成

Unity Catalog 可与现有数据系统无缝集成,如Amazon S3 与Azure Blob Storage,便于从不同来源访问与管理数据。这样,用户无需手动将数据移动或复制到 Databricks,即可快速分析大型数据集。

Unity Catalog 还支持多种文件格式,如 CSV、JSON、Parquet 和 Avro,使处理不同类型数据更加灵活。

Databricks Unity Catalog 最佳实践

在使用 Unity Catalog 时,有一些最佳实践可帮助确保高效、有效的数据管理。

包括以下方面:

  1. 为表与列使用描述性命名约定,便于理解数据。
  2. 定期更新 Unity Catalog 中的元数据,以跟踪对底层数据所做的任何更改。
  3. 使用访问控制来限制对敏感数据的访问,遵循“最小权限”原则。即根据用户或用户组的角色与职责,仅授予必要权限。
  4. 使用标签与标记对 Unity Catalog 中的数据集进行分类与组织,便于搜索特定数据。

这些措施将有助于确保有效的数据治理与最佳性能。

常见挑战及应对方法

Unity Catalog 并非万无一失,在有效管理数据方面也会面临一些挑战。

常见问题包括:

  • 数据重复:同一数据被多次存储,导致不一致与错误。
  • 数据质量:维护不善或不准确的数据会影响业务决策与流程。
  • 复杂数据层级:大型数据集具有复杂关系时,可能难以在 Unity Catalog 中进行组织与管理。

为应对这些挑战,建议:

  1. 定期审查与清理数据以避免重复,包括移除不必要或过时的数据。
  2. 实施数据质量检查与校验,以确保 Unity Catalog 中数据的准确性。

结语

Unity Catalog 借助 metastore、目录与工作区,将数据以单一视图进行管理,是一款功能强大的工具。它为存储与组织数据提供集中位置,使数据更易于在您的业务流程中进行管理与利用。

想进一步了解 Databricks?不妨查看我们的Databricks 入门课程、Databricks 教程指南,以及Databricks 网络研讨会。

Databricks Unity Catalog 常见问题

Unity Catalog 与 Databricks 的 Hive Metastore 有何不同?

Unity Catalog 是一项统一的元数据服务,相比 Databricks 上的传统 Hive Metastore 更高效、更具可扩展性。它为您的全部元数据需求提供单一可信来源,并便于管理与访问。

我可以将 Unity Catalog 与非 Databricks 的数据源一起使用吗?

是的,Unity Catalog 同时支持 Databricks 托管表与外部表,便于您将来自多种来源的元数据整合到一个位置。但可能存在一些限制。

Unity Catalog 如何提升性能?

通过提供集中式元数据存储,Unity Catalog 无需频繁查询外部系统,从而加快查询执行速度。

Austin Chia

作者

Austin Chia

我是 Austin,一名博主和科技作者,曾在医疗领域担任数据科学家与数据分析师,拥有多年的从业经验。我以生物学背景开启技术之路,如今通过我的科技博客帮助他人完成同样的转型。我对技术的热情促使我为数十家 SaaS 公司撰写内容,分享经验、启发他人。

主题