卷是支持对非表格数据集进行治理的 Unity Catalog 对象。 卷表示云对象存储位置的存储逻辑卷。 卷提供用于访问、存储、管理和组织文件的功能。
虽然表提供对表格数据集的治理,但卷增加了对非表格数据集的治理。 可以使用卷来存储和访问任何格式的文件,包括结构化、半结构化和非结构化数据。
Databricks 建议使用卷来控制对所有非表格数据的访问。 与表一样,卷可以是托管卷或外部卷。
重要
不能将卷用作表的位置。 卷仅用于基于路径的数据访问。 如果要在 Unity Catalog 中处理表格数据,请使用表。
以下文章详细介绍了如何使用卷:
注意
使用卷时,必须使用 SQL 仓库或运行 Databricks Runtime 13.3 LTS 或更高版本的群集,除非使用的是 Azure Databricks UI,例如目录资源管理器。
什么是托管表?
托管卷是在包含架构的托管存储位置中创建的 Unity Catalog 控制的存储卷。 请参阅 在 Unity 目录中指定托管存储位置。
托管卷允许创建受管理存储以处理文件,而无需外部位置和存储凭据的开销。 创建托管卷时无需指定位置,并且托管卷中数据的所有文件访问都通过 Unity Catalog 管理的路径进行。
什么是外部卷?
外部卷是使用 Unity Catalog 控制的存储凭据针对外部位置中的目录注册的 Unity Catalog 控制的存储卷。
Unity Catalog 不管理外部卷中文件的生命周期和布局。 删除外部表卷,Unity Catalog 不会删除基础数据。
使用哪个路径访问卷中的文件?
卷位于 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 Catalog 对象名称。 这些路径元素是只读的,用户不能直接写入,这意味着无法使用文件系统操作创建或删除这些目录。 它们会自动进行管理,并与相应的 Unity Catalog 实体保持同步。
注意
还可以使用云存储 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 根上的保留路径中,则可以提交支持票证以获取对此数据的临时访问权限,以将其移动到另一个位置。
限制
必须使用已启用 Unity Catalog 的计算来与 Unity Catalog 卷进行交互。 卷并非支持所有工作负载。
下表概述了基于 Databricks Runtime 版本的 Unity Catalog 容量限制。
Databricks Runtime 版本 | 限制 |
---|---|
所有支持的 Databricks Runtime 版本 |
|
14.3 LTS 及更高版本 |
|
14.2 及更低版本 |
|