共用方式為


Volumes

適用於:檢查標示為[是], Databricks SQL 檢查標示為[是], Databricks Runtime 13.3 LTS 和更新版本,檢查標示為[是], Unity Catalog 相關版本。

Volumes 是 Unity Catalog 物件,代表雲端物件儲存位置中記憶體的邏輯磁碟區。 Volumes 提供存取、儲存、控管及組織檔案的功能。 雖然 tables 提供表格式數據集的控管,volumes 新增非表格式數據集的治理。 您可以使用 volumes 以任何格式儲存和存取檔案,包括結構化、半結構化和非結構化數據。

Volumes 是 tables、views和其他在 Unity Catalog中被組織在 schema 下的物件的同層級。

磁碟區可以管理或外部。

如需詳細資訊和限制,請參閱 什麼是 Unity Catalogvolumes?

受控磁碟區

受控磁碟區是 Unity Catalog控管的記憶體磁碟區,該磁碟區是在包含 schema的受控儲存位置內建立的。 受控 volumes 允許建立控管的儲存空間,以使用檔案,而不需要外部位置和儲存空間 credentials的額外負擔。 建立受控磁碟區時,您不需要指定位置,而且受控 volumes 中數據的所有檔案存取都是透過 Unity 管理的路徑 Catalog。

外部磁碟區

外部儲存磁碟區是在外部位置的目錄中註冊的,由 Unity Catalog控管的儲存磁碟區。

磁碟區命名和參考

磁碟區名稱identifier,可在 SQL 命令中使用 catalog 和 schema 名稱來限定。

volumes 存取檔案的路徑會使用下列格式:

/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 存取外部 volumes 中的數據。

在 volumes 中管理檔案

適用於:核取記號為「是」 Databricks SQL 連接器

使用 Databricks SQL 連接器,您可以使用下列命令來管理 volumes 中的檔案:

  • PUT INTO 將檔案從本機記憶體複製到磁碟區。
  • GET 將檔案從磁碟區複製到本機記憶體。
  • REMOVE 從磁碟區移動 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