卷是支持对非表格数据集进行治理的 Unity Catalog 对象。 卷表示云对象存储位置的存储逻辑卷。 卷提供用于访问、存储、管理和组织文件的功能。
虽然表控制表格数据,但卷控制任何格式的非表格数据,包括结构化、半结构化或非结构化数据。
Databricks 建议使用卷来控制对所有非表格数据的访问。 卷分为两种类型:
- 托管卷: 对于简单的 Databricks 托管存储。
- 外部卷: 用于将治理添加到现有云对象存储位置。
卷的用例
卷的用例包括:
- 为外部系统生成的原始数据注册登陆区域,以支持其在 ETL 管道和其他数据工程活动的早期阶段的处理。
- 注册用于引入的暂存位置。 例如,使用自动加载程序或
COPY INTO
CTAS (CREATE TABLE AS
) 语句。 - 为数据科学家、数据分析师和机器学习工程师提供文件存储位置,以用作其探索数据分析和其他数据科学任务的一部分。
- 使 Azure Databricks 用户能够访问由其他系统生成并存储在云存储中的任意文件。 例如,由监视系统或 IoT 设备捕获的大型非结构化数据(例如图像、音频、视频和 PDF 文件)集合,或者从本地依赖项管理系统或 CI/CD 管道导出的库文件(JAR 和 Python 滚轮文件)。
- 存储操作数据,例如日志文件或检查点文件。
有关使用卷的演示,请参阅 使用 Unity 目录卷简化文件、映像和数据检索。
重要
不能将卷中的文件注册为 Unity 目录中的表。 卷仅用于基于路径的数据访问。 如果要在 Unity Catalog 中处理表格数据,请使用表。
托管卷与外部卷
使用 Azure Databricks 工具、UI 和 API 时,托管卷和外部卷提供几乎相同的体验。 主要区别与存储位置、生命周期和控制相关:
功能 / 特点 | 托管卷 | 外部卷 |
---|---|---|
存储位置 | 在架构的 UC 托管存储中创建 | 针对现有云对象存储路径注册 |
数据生命周期 | UC 管理布局和删除(删除时保留 7 天) | 删除卷时,数据将保留在云存储中 |
存取控制 | 所有访问都通过 UC | UC 控制访问,但外部工具可以使用直接 URI |
需要迁移? | 否 | 否 - 使用现有存储路径 as-is |
典型用例 | 仅限 Databricks 的工作负载的最简单选项 | 混合 Databricks 和外部系统访问 |
为何使用托管卷?
托管卷具有以下优势:
- Databricks 工作负载的默认选择。
- 无需手动管理云凭据或存储路径。
- 用于快速创建受管理存储位置的最简单选项。
为何使用外部卷?
外部卷允许向现有云对象存储目录添加 Unity 目录数据治理。 外部卷的一些用例包括:
- 添加数据已驻留的治理,而无需数据复制。
- 管理其他系统生成的文件,这些系统必须由 Azure Databricks 引入或访问。
- 管理 Azure Databricks 生成的数据,这些数据必须直接从其他系统从云对象存储进行访问。
Databricks 建议使用外部卷来存储除 Azure Databricks 以外的外部系统读取或写入的非表格数据文件。 Unity 目录不控制直接从外部系统针对云对象存储执行的读取和写入,因此必须在云帐户中配置其他策略和凭据,以便数据治理策略在 Azure Databricks 外部得到尊重。
用于访问卷中的文件的路径
卷位于 Unity Catalog 三级命名空间的第三级别 (catalog.schema.volume
):
无论使用 Apache Spark、SQL、Python 还是其他语言和库,访问卷的路径都是相同的。 这与绑定到 Azure Databricks 工作区的对象存储中的文件的旧访问模式不同。
访问卷中的文件的路径使用以下格式:
/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>
使用 Apache Spark 时,Azure Databricks 还支持可选 dbfs:/
方案,因此以下路径也有效:
dbfs:/Volumes/<catalog>/<schema>/<volume>/<path>/<file-name>
/<catalog>/<schema>/<volume>
路径部分映射到文件的三个 Unity 目录对象名称。 这些目录是只读的,由 Unity 目录自动管理。 无法使用文件系统命令创建或删除它们。
注意
还可以使用云存储 URI 访问外部卷中的数据。
卷的保留路径
卷引入了以下用于访问卷的保留路径:
dbfs:/Volumes
/Volumes
注意
路径也保留用于 Apache Spark API 和 dbutils
(包括 /volumes
、/Volume
、/volume
)中这些路径的潜在拼写错误,无论它们前面是否为 dbfs:/
。
/dbfs/Volumes
路径也是保留的,但不能用于访问卷。
仅在 Databricks Runtime 13.3 LTS 及更高版本上支持卷。 在 Databricks Runtime 12.2 LTS 及更低版本中,针对 /Volumes
路径的操作可能会成功,但可以将数据写入附加到计算群集的临时存储磁盘,而不是按预期将数据保存到 Unity Catalog 卷。
重要
如果预先存在的数据存储在 DBFS 根目录上的保留路径中,请提交支持票证以获取对此数据的临时访问权限,以将其移动到另一个位置。
计算要求
使用卷时,必须使用运行 Databricks Runtime 13.3 LTS 或更高版本的 SQL 仓库或群集,除非使用的是 Azure Databricks UI,例如目录资源管理器。
限制
必须使用已启用 Unity Catalog 的计算来与 Unity Catalog 卷进行交互。
下表概述了基于 Databricks Runtime 版本的 Unity Catalog 容量限制。
Databricks Runtime 版本 | 限制 |
---|---|
所有支持的 Databricks Runtime 版本 |
|
14.3 LTS 及更高版本 |
|
14.2 及更低版本 |
|
后续步骤
以下文章详细介绍了如何使用卷: