创建目录

本文介绍如何在 Unity Catalog 中创建目录。 一个目录包含架构(数据库),而一个架构包含表、视图、卷、模型和函数。

若要了解有关目录的详细信息,请参阅 Azure Databricks 中的目录是什么?

注意

若要了解如何创建外部目录(一种在外部数据系统中镜像数据库的 Unity Catalog 对象),请参阅创建外部目录。 另请参阅管理和使用外部目录

要求

创建目录(无论目录类型如何):

  • 你需要是 Azure Databricks 元存储管理员或拥有对元存储的 CREATE CATALOG 权限。
  • 用于运行笔记本以创建目录的计算资源必须使用 Databricks Runtime 11.3 或更高版本,并且必须使用符合 Unity Catalog 要求的访问模式。 请参阅访问模式。 SQL 仓库始终支持 Unity Catalog。

创建共享目录

  • 工作区中必须已经存在 Delta Sharing 共享。 请参阅如何向我的团队提供共享数据?
  • 必须具有元存储管理员身份、拥有对元存储的 USE PROVIDER 权限,或者拥有包含共享的提供程序对象。

创建标准目录

  • 如果为目录指定托管存储位置,则必须拥有对目标外部位置的 CREATE MANAGED STORAGE 权限。
  • 如果不存在元存储级别的托管存储,则必须为目录指定托管存储位置

创建外部目录

  • 必须是用于创建外部目录的连接的所有者,或者对该连接拥有 CREATE FOREIGN CATALOG 权限。
  • 必须在 Databricks Runtime 13.1 或更高版本上使用计算。 SQL 仓库必须是 Pro 或无服务器仓库。

创建目录

要创建目录,可以使用目录资源管理器、SQL 命令、REST API、Databricks CLI 或 Terraform。 创建目录时,会自动创建两个架构(数据库):defaultinformation_schema

目录资源管理器

  1. 登录到链接到元存储的工作区。

  2. 单击 目录图标目录”。

  3. 单击“创建目录”按钮。

  4. 在“新建目录”对话框中,输入目录名称,然后选择要创建的目录类型

    • 标准目录:组织由 Unity Catalog 管理的数据和 AI 资产的安全对象。 适用于除 Lakehouse Federation 和从 Delta Sharing 共享创建的目录之外的所有用例。
    • 外部目录:使用 Lakehouse Federation 镜像外部数据系统中的数据库的安全对象。 请参阅《Lakehouse Federation 设置概述》。
    • 共享目录:组织以 Delta Sharing 共享的形式与你共享的数据和其他资产的安全对象。 从共享创建目录可让工作区中的用户读取这些资产。 请参阅什么是共享?
  5. 根据目录类型指定以下选项:

    • 对于标准目录:这是可选的,但强烈建议指定托管存储位置。 必须对用作托管存储位置的目标外部位置拥有 CREATE MANAGED STORAGE 权限。 请参阅在 Unity Catalog 中指定托管存储位置

      可以选择指定已定义外部位置的子路径。 如果尚未定义外部位置,可以通过单击“新建外部位置”来创建一个

      重要

      如果工作区没有元存储级别的存储位置,则必须在创建目录时指定托管存储位置

    • 对于外部目录:必须选择一个连接,它是 Unity Catalog 中的安全对象,指定用于访问外部数据库系统的路径和凭据。 请参阅《Lakehouse Federation 设置概述》。

      选择连接后,输入要镜像的数据库或其他 Databricks 目录的名称

      该要求因数据源而异:

      • MySQL 使用两层命名空间,因此不需要数据库名称。
      • 若要连接到另一个 Databricks 工作区中的目录,请输入 Databricks 目录 名称,而不是数据库名称。

      如果尚未定义连接,可以通过单击“新建连接”来创建一个

    • 对于共享目录:必须选择一个提供程序和一个共享。 选择提供程序后,就可以选择该提供程序的一个共享。

      如果不确定所需提供程序和共享,你可能会发现使用目录资源管理器浏览器浏览或搜索提供程序和共享更容易。 请参阅查看提供程序查看提供程序与你共享的共享

  6. 单击 “创建”

  7. 在“已创建目录!”对话框中,单击“查看目录”以接受自动配置的目录,或单击“配置目录”(推荐)以配置目录权限、工作区绑定和元数据

    如果单击“查看目录”,则附加到元存储的所有工作区都可以访问该目录,并且所有帐户用户都可获得 BROWSE 权限。 可以跳过此过程中的其余步骤并继续将架构添加到目录。 请参阅创建架构

    可以随时返回目录资源管理器中的目录详细信息页来更新所有者、标签、备注、工作区绑定、权限和架构。

  8. 在“配置目录”>“工作区”页上,指定目录绑定到的工作区。

    默认情况下,该目录与附加到当前元存储的所有工作区共享。 如果目录包含应限制到特定工作区的数据,请清除“所有工作区均有权访问”选项,然后使用“分配给工作区”按钮添加这些工作区。 必须包含当前工作区。

    分配工作区后,可以选择将其默认“读写”访问级别更改为“只读”:从列表中选择工作区,然后单击“管理访问级别”按钮

    有关详细信息,请参阅仅限特定工作区能访问目录

  9. 单击“下一步”,为目录分配权限

    默认情况下,所有帐户用户都具有 BROWSE 权限,这使他们能够发现目录元数据,而无需对数据的读取访问。

    要向用户、组或服务主体授予权限,请单击“授予”并按照 Unity Catalog 权限和安全对象中的说明进行操作。

  10. 单击“下一步”添加可选标签和备注元数据

    标签是键值对,可用于组织目录并对其进行分类,以简化数据资产的搜索和发现。 值是可选的。 请参阅“将标记应用于 Unity Catalog 安全对象”。

    备注是一个开放式字段,通常用于提供可帮助用户发现目录中的数据资产的描述。 请参阅向数据和 AI 资产添加备注

  11. 单击“ 保存”。

  12. 将架构和数据对象添加到目录。

    请参阅创建架构

创建目录后,可以随时使用目录资源管理器更新所有者、标签、备注、工作区绑定和权限。

SQL

要创建标准目录,请在笔记本或 SQL 查询编辑器中运行以下 SQL 命令。 括号中的项是可选的。 替换占位符值替:

  • <catalog-name>:目录的名称。

  • <location-path>:可选但强烈建议使用。 如果希望此目录中托管表的存储位置不同于为元存储配置的默认根存储,请提供存储位置路径。

    重要

    如果你的工作区没有默认元存储级存储位置,则你需要在创建目录时指定托管存储位置。

    必须在外部位置配置中定义此路径,并且你必须对外部位置配置具有 CREATE MANAGED STORAGE 权限。 可以使用在该外部位置配置中定义的路径,也可以使用子路径(即 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance''abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance/product')。

  • <comment>:可选说明或其他注释。

CREATE CATALOG [ IF NOT EXISTS ] <catalog-name>
   [ MANAGED LOCATION '<location-path>' ]
   [ COMMENT <comment> ];

例如,要创建名为 example 的目录:

CREATE CATALOG IF NOT EXISTS example;

要创建共享目录,请在笔记本或 SQL 查询编辑器中运行以下命令。 括号中的项是可选的。

CREATE CATALOG [IF NOT EXISTS] <catalog-name>
USING SHARE <provider-name>.<share-name>;
[ COMMENT <comment> ];

要创建外部目录,请在笔记本或 SQL 查询编辑器中运行以下命令。 括号中的项是可选的。 替换占位符值替:

  • <catalog-name>:Azure Databricks 中目录的名称。
  • <connection-name>:指定数据源、路径和访问凭据的连接对象
  • <database-name>:要在 Azure Databricks 中镜像为目录的数据库的名称。 对于使用双层命名空间的 MySQL 不是必需的。 对于 Databricks 到 Databricks Lakehouse Federation,请改用 catalog '<external-catalog-name>'
  • <external-catalog-name>:仅限 Databricks 至 Databricks:要镜像的外部 Databricks 工作区中的目录的名称。 请参阅在另一个 Databricks 工作区中运行联合查询
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS [(database '<database-name>') | (catalog '<external-catalog-name>')];

另请参阅创建外部目录

要仅限帐户中的特定工作区能访问目录(也称为“工作区-目录”绑定),请参阅仅限特定工作区能访问目录

有关详细参数说明,请参阅 CREATE CATALOG

创建目录后,为目录分配权限。 请参阅 Unity Catalog 特权和安全对象

其他

Terraform:还可使用 Databricks Terraform 提供程序databricks_catalog 创建目录。 可以使用 databricks_catalogs 检索有关目录的信息。

REST API:使用 POST /api/2.1/unity-catalog/catalogs

Databricks CLI:databricks catalogs create <catalog-name> [options] 有关选项列表,请运行 databricks catalogs create -h。 API 参考中也介绍了相关选项。 按照上一段中的 API 链接进行操作。

创建目录后,为目录分配权限。 请参阅 Unity Catalog 特权和安全对象

详细信息