什么是 Azure Databricks 中的目录?

目录是 Azure Databricks Unity 目录数据治理模型中数据整理的主要单位。 本文将概述 Unity Catalog 中的目录并介绍如何以最佳方式使用这些目录。

目录是 Unity 目录的三级命名空间(catalog.schema.table-etc)中的第一层。 目录包含架构,而架构又可以包含表、视图、卷、模型和函数。 目录在 Azure Databricks 帐户的 Unity Catalog 元存储中进行注册。

Unity Catalog 对象模型图,侧重于目录

如何将数据整理到目录中?

设计数据治理模型时,应仔细考虑所创建的目录。 作为组织数据治理模型中的最高级别,每个目录都应表示数据隔离的逻辑单元和数据访问的逻辑类别,从而允许有效的授权层次结构流向架构及其包含的数据对象。 因此目录通常镜像组织单位或软件开发生命周期范围。 例如,可以选择生产数据的目录和开发数据的目录,或非客户数据的目录和敏感客户数据的目录。

使用目录进行数据隔离

每个目录通常都有自己的托管存储位置来存储托管表和卷,从而在目录级别提供物理数据隔离。 还可以选择在元存储级别存储数据,为没有自己的托管存储位置的目录提供默认存储位置。 可以在架构级别添加存储,以便实现更精细的数据隔离。

由于 Azure Databricks 帐户每个区域有一个元存储,因此目录本质上是按区域隔离的。

有关详细信息,请参阅什么是 Azure Databricks 中的数据库对象数据在存储中以物理方式分隔

目录级特权

由于任何 Unity Catalog 对象的授权均由该对象的子对象继承,因此拥有目录或对目录拥有广泛的权限非常强大。 例如,目录所有者拥有目录和目录中对象的所有权限,并且他们可以授予对目录中任何对象的访问权限。 目录中具有 SELECT 的用户可以读取目录中的任何表。 目录中具有 CREATE TABLE 的用户可以在目录中的任何架构中创建表。

若要强制实施最低权限原则,即用户拥有执行所需任务所需的最低访问权限,通常只需授予对用户所需的层次结构中的特定对象或级别的访问权限。 但目录级权限让目录所有者可以管理较低级别对象所有者可以授予的权限。 例如,即使用户被授予对表等低级别数据对象的访问权限,该用户也无法访问该表,除非他们对包含该表的目录具有 USE CATALOG 特权。

有关详细信息,请参阅管理 Unity Catalog 对象所有权常规 Unity Catalog 特权类型,以及数据治理和数据隔离构建基块

目录类型

创建目录时,系统会提供两个选项:

  • 标准目录:典型目录,用作在 Unity Catalog 中整理数据对象的主要单位。 这是本文中讨论的目录类型。
  • 外部目录:仅在 Lakehouse Federation 方案中使用的 Unity Catalog 对象。 外部目录可镜像外部数据系统中的数据库,使你能够在 Azure Databricks 工作区中对该数据系统执行只读查询。 请参阅“什么是 Lakehouse Federation?”。

除了这两种目录类型,Azure Databricks 在创建新工作区时还会自动预配以下目录:

  • hive_metastore 目录:这是 Azure Databricks 工作区中旧 Hive 元存储管理的所有数据的存储库。 将现有非 Unity Catalog 工作区转换为 Unity Catalog 时,在旧版 Hive 元存储中注册的所有对象都会显示在 Unity Catalog 的 hive_metastore 目录中。 有关与 Unity Catalog 一起使用 Hive 元存储的信息,请参阅结合使用 Unity Catalog 和旧版 Hive 元存储。 Hive 元存储已弃用,所有 Azure Databricks 工作区都应迁移到 Unity Catalog。
  • 工作区目录:在所有新工作区中,默认情况下会为你创建此目录。 通常,它的名称与工作区名称共享。 如果此目录存在,则默认情况下你的工作区(并且只有你的工作区)中的所有用户都可以访问它,这使得用户可以方便地尝试在 Unity Catalog 中创建和访问数据对象的过程。 请参阅步骤 1:确认已为 Unity Catalog 启用工作区

默认目录

为为 Unity Catalog 启用的每个工作区配置默认目录。 默认目录支持在不指定目录的情况下执行数据操作。 如果在执行数据操作时省略顶级目录名称,则会采用默认目录。

如果你的工作区已自动为 Unity Catalog 启用,则预先预配的工作区目录将指定为默认目录。 工作区管理员可以根据需要更改默认目录。

有关详细信息,请参阅管理默认目录

工作区-目录绑定

如果使用工作区来隔离用户数据访问,则可能需要使用工作区目录绑定。 通过工作区目录绑定,可以按工作区边界限制目录访问。 例如,可以确保工作区管理员和用户只能从生产工作区环境 prod_workspace 访问 prod_catalog 中的生产数据。 除非指定绑定,否则目录将与附加到当前元存储的所有工作区共享。 请参阅整理数据限制对特定工作区的目录访问

如果工作区自动启用了 Unity Catalog,则默认情况下提前预配的工作区目录都将绑定到工作区。

详细信息