适用于: 勾选“是” Databricks SQL 勾选“是” Databricks Runtime 13.3 LTS 及更高版本 勾选“是” 仅 Unity Catalog

卷是 Unity Catalog 对象,表示云对象存储位置中的逻辑存储卷。 卷提供用于访问、存储、管理和组织文件的功能。 虽然表提供对表格数据集的治理,但卷增加了对非表格数据集的治理。 可以使用卷来存储和访问任何格式的文件,包括结构化、半结构化和非结构化数据。

卷是表、视图和其他在 Unity Catalog 中的架构下组织的同级对象。

卷可以是托管卷,也可以是外部卷。

有关更多详细信息和限制,请参阅“什么是 Unity Catalog 卷?”。

托管卷

托管卷是在包含架构的托管存储位置中创建的 Unity Catalog 控制的存储卷。 托管卷允许创建受管理存储以处理文件,而无需外部位置和存储凭据的开销。 创建托管卷时无需指定位置,并且托管卷中数据的所有文件访问都通过 Unity Catalog 管理的路径进行。

外部卷

外部卷是针对外部位置中的目录注册的 Unity Catalog 控制的存储卷。

卷命名和引用

卷名称是可以使用 SQL 命令中的目录和架构名称限定的标识符

访问卷中的文件的路径使用以下格式:

/Volumes/<catalog_identifier>/<schema_identifier>/<volume_identifier>/<path>/<file_name>

请注意,Azure Databricks 将标识符规范化为小写。

Azure Databricks 还支持可选 dbfs:/ 方案,因此以下路径也有效:

dbfs:/Volumes/<catalog_identifier>/<schema_identifier>/<volume_identifier>/<path>/<file_name>

注意

还可以使用云存储 URI 访问外部卷中的数据。

管理卷中的文件

适用于: 勾选“是” Databricks SQL 连接器

使用 Databricks SQL 连接器,可以通过以下命令管理卷中的文件:

  • PUT INTO,用于将文件从本地存储复制到卷中。
  • GET,用于将文件从卷复制到本地存储。
  • REMOVE,用于从卷中删除文件。

示例

--- Create an external volume under the directory "my-path"
> CREATE EXTERNAL VOLUME IF NOT EXISTS myCatalog.mySchema.myExternalVolume
        COMMENT 'This is my example external volume'
        LOCATION 's3://my-bucket/my-location/my-path'
 OK

--- Set the current catalog
> USE CATALOG myCatalog;
 OK

--- Set the current schema
> USE SCHEMA mySchema;
 OK

--- Create a managed volume; it is not necessary to specify a location
> CREATE VOLUME myManagedVolume
    COMMENT 'This is my example managed volume';
 OK

--- List the files inside the volume, all names are lowercase
> LIST '/Volumes/mycatalog/myschema/myexternalvolume'
 sample.csv

> LIST 'dbfs:/Volumes/mycatalog/myschema/mymanagedvolume'
 sample.csv

--- Print the content of a csv file
> SELECT * FROM csv.`/Volumes/mycatalog/myschema/myexternalvolume/sample.csv`
 20

> SELECT * FROM csv.`dbfs:/Volumes/mycatalog/myschema/mymanagedvolume/sample.csv`
 20