分享方式:


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

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

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

中繼存放區層級受控記憶體是選擇性的,且會自動為 Unity 目錄啟用的新工作區,而不需要中繼存放區層級的受控儲存位置。 Azure Databricks 建議您在目錄層級指派受控記憶體以進行邏輯數據隔離,並以中繼存放區層級和架構層級作為選項。 不過,某些功能需要中繼存放區層級的記憶體,例如使用差異共用或使用個人暫存位置作為 Azure Databricks 合作夥伴共用筆記本。 請參閱 自動啟用 Unity 目錄數據控管和數據隔離建置組塊,以及 [_]/data-governance/unity-catalog/create-metastore.md)。

什麼是受控記憶體位置?

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

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

下表描述如何宣告受控儲存位置,並與 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 目錄磁碟區?