Share via


在 Unity 目錄中指定受控儲存位置

受控儲存位置會指定雲端物件記憶體中的位置,以儲存受控數據表和受控磁碟區的數據。

您可以將受控記憶體位置與中繼存放區、目錄或架構產生關聯。 階層中較低層級的受控儲存位置會覆寫在建立受控數據表或受控磁碟區時,在較高層級定義的儲存位置。

當帳戶管理員建立中繼存放區時,他們可以在 Azure Data Lake 儲存體 Gen2 容器或 Cloudflare R2 貯體中建立記憶體位置的關聯,以作為受控記憶體位置。 目錄和架構層級的受控儲存位置是選擇性的,但 Databricks 建議在類別目錄層級指派受控記憶體位置以進行邏輯數據隔離。 請參閱 數據控管和數據隔離建置組塊

重要

如果您的工作區已針對 Unity 目錄自動啟用,則會建立 Unity 目錄中繼存放區,而不需要中繼存放區層級的受控儲存位置。 您應該在目錄或架構層級指派受控儲存位置。 請參閱 自動啟用 Unity 目錄 和資料 控管和數據隔離建置組塊

什麼是受控記憶體位置?

受控記憶體位置具有下列屬性:

  • 受控數據表和受控磁碟區會將數據和元數據檔案儲存在受控儲存位置。
  • 受控儲存位置無法與外部數據表或外部磁碟區重疊。

下表描述如何宣告受控儲存位置,並與 Unity Catalog 物件建立關聯:

相關聯的 Unity Catalog 物件 如何設定 與外部位置的關聯
Metastore 在中繼存放區建立期間由帳戶管理員設定。 無法重疊外部位置。
目錄 使用 MANAGED LOCATION 關鍵詞在目錄建立期間指定。 必須包含在外部位置內。
結構描述 使用 MANAGED LOCATION 關鍵詞在架構建立期間指定。 必須包含在外部位置內。

儲存受控資料表和受控磁碟區之數據和元數據的受控儲存位置會使用下列規則:

  • 如果包含架構具有受控位置,則數據會儲存在架構受控位置中。
  • 如果包含的架構沒有受控位置,但目錄具有受控位置,則數據會儲存在目錄受控位置中。
  • 如果包含的架構和包含目錄都沒有受控位置,數據會儲存在中繼存放區受控位置中。

Unity 目錄可防止位置控管重疊。 請參閱 路徑如何適用於 Unity 目錄所管理的數據?

受控儲存位置、記憶體根目錄和儲存位置

當您指定MANAGED LOCATION目錄或架構的 時,所提供的位置會追蹤為 Unity 目錄中 儲存體 根目錄。 為了確保所有受控實體都有唯一的位置,Unity 目錄會使用下列格式,將哈希子目錄新增至指定的位置:

Object 路徑
結構描述 <storage-root>/__unitystorage/schemas/00000000-0000-0000-0000-000000000000
目錄 <storage-root>/__unitystorage/catalogs/00000000-0000-0000-0000-000000000000

受控儲存位置的完整路徑會追蹤為 Unity 目錄中 儲存體 位置

您可以為多個架構和目錄指定相同的受控儲存位置。

必要權限

具有外部位置許可權的使用者 CREATE MANAGED STORAGE 可以在目錄或架構建立期間設定受控記憶體位置。

在中繼存放區層級設定的受控記憶體位置,必須由帳戶管理員在中繼存放區建立期間進行設定。

設定目錄的受控儲存位置

在目錄建立期間使用 MANAGED LOCATION 關鍵詞設定目錄的受控儲存位置,如下列範例所示:

CREATE CATALOG <catalog-name>
MANAGED LOCATION 'abfss://<container-name>@<storage-account>.dfs.core.windows.net/<path>/<directory>';

設定架構的受控儲存位置

在架構建立期間使用 MANAGED LOCATION 關鍵詞設定架構的受控儲存位置,如下列範例所示:

CREATE CATALOG <catalog>.<schema-name>
MANAGED LOCATION 'abfss://<container-name>@<storage-account>.dfs.core.windows.net/<path>/<directory>';

下一步

管理儲存位置可用來建立受控數據表和受控磁碟區。 請參閱 在 Unity 目錄中 建立資料表和 建立和使用磁碟區