创建外部位置以将云存储连接到 Azure Databricks

本文介绍如何在 Unity Catalog 中配置外部位置,以将云存储连接到 Azure Databricks。

外部位置将 Unity Catalog 存储凭据与云对象存储容器相关联。 外部位置用于定义目录和架构的托管存储位置,并定义外部表和外部卷的位置。

可以创建一个引用 Azure Data Lake Storage Gen2 存储容器或 Cloudflare R2 存储桶中的存储的外部位置。

可以使用目录资源管理器、Databricks CLI、笔记本或 Databricks SQL 查询中的 SQL 命令或者 Terraform 来创建外部位置。

注意

定义卷时,对卷路径下数据的云 URI 访问受卷权限约束。

开始之前的准备工作

先决条件

权限要求:

  • 你必须对元存储和外部位置中引用的存储凭据拥有 CREATE EXTERNAL LOCATION 权限。 默认情况下,元存储管理员对元存储具有 CREATE EXTERNAL LOCATION

使用目录资源管理器创建外部位置

可以使用目录资源管理器手动创建外部位置。

权限和先决条件:请参阅准备工作

要创建外部位置,请执行以下操作:

  1. 登录到一个附加到元存储的工作区。

  2. 在边栏中单击“目录”图标“目录”。

  3. 单击“+ 添加”按钮,然后选择“添加外部位置”。

  4. 输入外部位置名称

  5. 可以选择从现有装入点复制容器路径(仅限 Azure Data Lake Storage Gen2 容器)。

  6. 如果不是从现有装入点复制,请使用“URL”字段输入要用作外部位置的存储容器或 R2 存储桶路径。

    例如,abfss://my-container-name@my-storage-account.dfs.core.windows.net/<path>r2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>

  7. 选择授予对该外部位置的访问权限的存储凭据。

  8. (可选)如果希望用户对该外部位置具有只读访问权限,请单击“高级选项”并选择“只读”。 有关详细信息,请参阅将外部位置标记为只读

  9. 单击 “创建”

  10. 授予使用外部位置的权限。

    要允许任何人使用该外部位置,必须授予权限:

    • 要使用外部位置将托管存储位置添加到元存储、目录或架构,请授予 CREATE MANAGED LOCATION 权限。
    • 要创建外部表或卷,请授予 CREATE EXTERNAL TABLECREATE EXTERNAL VOLUME

    要使用目录资源管理器授予权限,请执行以下操作:

    1. 单击外部位置名称以打开详细信息窗格。
    2. 在“权限”选项卡上,单击“授权”。
    3. 在“<external location> 授权”对话框中,选择“主体”字段中的用户、组或服务主体,然后选择要授予的权限
    4. 单击“授予”

使用 SQL 创建外部位置

若要使用 SQL 创建外部位置,请在笔记本或 SQL 查询编辑器中运行以下命令。 替换占位符值。

权限和先决条件:请参阅准备工作

  • <location-name>:外部位置的名称。 如果 location_name 包含特殊字符,例如连字符 (-),则它必须用反引号 (` `) 引起来。 请参阅名称

  • <bucket-path>:云租户中此外部位置授予访问权限的路径。 例如,abfss://my-container-name@my-storage-account.dfs.core.windows.net/<path>r2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>

  • <storage-credential-name>:授权读取和写入存储容器或存储桶路径的存储凭据名称。 如果存储凭据名称包含特殊字符,例如连字符 (-),则它必须用反引号 (` `) 引起来。

CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<bucket-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];

后续步骤