Unity 目录卷中的路径规则和访问权限

本页介绍有关 Unity 目录中路径重叠的限制、Unity 目录对象中数据文件的基于路径的访问模式的详细信息,以及 Unity 目录如何管理表和卷的路径。

Unity 目录中的路径重叠限制

Unity Catalog 通过防止数据托管目录重叠来强制实施数据治理。 Unity Catalog 强制实施以下规则:

  • 外部位置不能与其他外部位置重叠。
  • 表和卷将数据文件存储在外部位置或元存储根位置。
  • 卷不能与其他卷重叠。
  • 表不能与其他表重叠。
  • 表和卷不能相互重叠。
  • 托管存储位置不能相互重叠。 请参阅在 Unity Catalog 中指定托管存储位置
  • 外部卷不能与托管存储位置重叠。
  • 外部表不能重叠托管存储位置。

这些规则意味着 Unity Catalog 中存在以下限制:

  • 不能在另一个外部位置内定义外部位置。
  • 不能在另一卷中定义卷。
  • 不能在另一个表中定义表。
  • 不能在卷内的任何数据文件或目录上定义表。
  • 不能在表内的目录上定义卷。

注释

始终可使用基于路径的访问从卷(包括 Delta Lake)写入或读取数据文件。 不能将这些数据文件注册为 Unity 目录元存储中的表。

表和卷的完全托管路径

创建托管表或托管卷时,Unity Catalog 会在与包含架构相关联的 Unity Catalog 配置的存储位置中创建一个新目录。 此目录的名称是随机生成的,以避免与现有其他目录发生任何潜在的冲突。

此行为不同于 Hive 元存储创建托管表的方式。 Databricks 建议始终使用表名与 Unity Catalog 托管表交互,使用卷路径与 Unity Catalog 托管卷进行交互。

表和卷的外部位置路径

创建外部表或卷时,可以在受 Unity 目录管理的外部位置内指定路径。

重要

为了避免路径冲突,Databricks 建议在子目录中而不是在外部位置的根目录中创建外部表和卷。

为便于使用,请使用表名与 Unity 目录外部表进行交互,以及使用卷路径的外部卷。 拥有足够权限的用户还可以使用完整的云存储路径直接访问数据。

通过这些对象的云 URI 访问数据完全受 Unity 目录权限控制,后者会覆盖外部位置本身的任何特权。 请参阅 Unity 目录和安全对象中的路径重叠限制

访问 Unity 目录中的数据

Unity Catalog 对象通过对象标识符、卷路径或云 URI 提供对数据的访问。 可以使用这些值访问与卷和表关联的数据。

可使用具有以下模式的三层标识符来访问 Unity Catalog 表:

<catalog_name>.<schema_name>.<table_name>

Unity 目录中的卷文件路径

卷提供一个文件路径,用于访问具有以下模式的数据文件:

/Volumes/<catalog_name>/<schema_name>/<volume_name>/<path_to_file>

云 URI 要求用户提供驱动程序、存储容器标识符和目标文件的完整路径,如以下示例所示:

abfss://<container_name>@<storage_account>.dfs.core.chinacloudapi.cn/<path>

下表显示了 Unity Catalog 对象允许的访问方法:

物体 对象标识符 文件路径 云 URI
外部位置 是的
托管表 是的
外部表 是的 是的
托管卷 是的
外部卷 是的 是的

注释

Unity Catalog 卷使用具有以下模式的三层对象标识符来管理命令(例如 CREATE VOLUMEDROP VOLUME):

<catalog_name>.<schema_name>.<volume_name>

若要实际使用卷中的文件,必须使用基于路径的访问。