创建外部位置以将云存储连接到 Azure Databricks
本文介绍如何在 Unity Catalog 中配置外部位置,以将云存储连接到 Azure Databricks。
外部位置将 Unity Catalog 存储凭据与云对象存储容器相关联。 外部位置用于定义目录和架构的托管存储位置,并定义外部表和外部卷的位置。
可以创建一个引用 Azure Data Lake Storage Gen2 存储容器或 Cloudflare R2 存储桶中的存储的外部位置。
可以使用目录资源管理器、Databricks CLI、笔记本或 Databricks SQL 查询中的 SQL 命令或者 Terraform 来创建外部位置。
注意
定义卷时,对卷路径下数据的云 URI 访问受卷权限约束。
开始之前的准备工作
先决条件:
在 Azure Databricks 中创建外部位置对象之前,必须创建要用作外部位置的 Azure Data Lake Storage Gen2 存储容器或 Cloudflare R2 存储桶。
用作外部位置的 Azure Data Lake Storage Gen2 存储帐户必须具有分层命名空间。
必须在 Azure Databricks 中定义存储凭据,以访问云存储位置路径。 请参阅创建用于连接到 Azure Data Lake Storage Gen2 的存储凭据,以及创建用于连接到 Cloudflare R2 的存储凭据。
权限要求:
- 你必须对元存储和外部位置中引用的存储凭据拥有
CREATE EXTERNAL LOCATION
权限。 默认情况下,元存储管理员对元存储具有CREATE EXTERNAL LOCATION
。
使用目录资源管理器创建外部位置
可以使用目录资源管理器手动创建外部位置。
权限和先决条件:请参阅准备工作。
要创建外部位置,请执行以下操作:
登录到一个附加到元存储的工作区。
在边栏中单击“目录”。
单击“+ 添加”按钮,然后选择“添加外部位置”。
输入外部位置名称。
可以选择从现有装入点复制容器路径(仅限 Azure Data Lake Storage Gen2 容器)。
如果不是从现有装入点复制,请使用“URL”字段输入要用作外部位置的存储容器或 R2 存储桶路径。
例如,
abfss://my-container-name@my-storage-account.dfs.core.windows.net/<path>
或r2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>
。选择授予对该外部位置的访问权限的存储凭据。
(可选)如果希望用户对该外部位置具有只读访问权限,请单击“高级选项”并选择“只读”。 有关详细信息,请参阅将外部位置标记为只读。
单击 “创建” 。
授予使用外部位置的权限。
要允许任何人使用该外部位置,必须授予权限:
- 要使用外部位置将托管存储位置添加到元存储、目录或架构,请授予
CREATE MANAGED LOCATION
权限。 - 要创建外部表或卷,请授予
CREATE EXTERNAL TABLE
或CREATE EXTERNAL VOLUME
。
要使用目录资源管理器授予权限,请执行以下操作:
- 单击外部位置名称以打开详细信息窗格。
- 在“权限”选项卡上,单击“授权”。
- 在“
<external location>
授权”对话框中,选择“主体”字段中的用户、组或服务主体,然后选择要授予的权限。 - 单击“授予”。
- 要使用外部位置将托管存储位置添加到元存储、目录或架构,请授予
使用 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>'];
后续步骤
- 授予其他用户使用外部位置的权限。 请参阅管理外部位置。
- 使用外部位置定义托管存储位置。 请参阅在 Unity Catalog 中指定托管存储位置。
- 使用外部位置定义外部表。 请参阅创建外部表。
- 使用外部位置定义外部卷。 请参阅创建和使用卷。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈