受控儲存位置會指定雲端物件記憶體中的位置,以儲存受控數據表和受控磁碟區的數據。
您可以將受控記憶體位置與中繼存放區、目錄或架構產生關聯。 在階層結構中,較低層級定義的管理儲存位置,會在建立管理資料表或管理磁碟區時,覆寫較高層級定義的儲存位置。
Databricks 建議您在目錄層級指派受控記憶體以進行邏輯數據隔離,並以中繼存放區層級和架構層級作為選項。
系統會自動建立啟用 Unity Catalog 的新工作區,並且不需要創建中繼存放區層級之受控儲存位置。 要判斷是否需要元儲存層級的儲存,請參閱 「開始使用 Unity 目錄 」並 「將管理儲存加入現有中儲存庫」。
什麼是受控記憶體位置?
受控記憶體位置具有下列屬性:
- 受控數據表和受控磁碟區會將數據和元數據檔案儲存在受控儲存位置。
- 受控儲存位置無法與外部數據表或外部磁碟區重疊。
下表描述如何宣告受控儲存位置,並與 Unity Catalog 物件建立關聯:
| 相關聯的 Unity Catalog 物件 | 如何設定 | 與外部位置的關聯 |
|---|---|---|
| 中繼存放區 | 由帳號管理員在建立元儲存庫時設定。 | 無法重疊外部位置。 |
| 標準目錄 | 在目錄建立時使用 MANAGED LOCATION 關鍵字指定,或在建立後使用 ALTER CATALOG SET MANAGED LOCATION 更改。 |
必須位於外部位置內。 |
| 國外目錄 | 使用目錄總管建立目錄之後指定。 | 必須位於外部位置內。 |
| 架構 | 在建立結構時使用 MANAGED LOCATION 關鍵字指定,或在建立後使用 ALTER SCHEMA SET MANAGED LOCATION。 |
必須位於外部位置內。 |
備註
當 Unity Catalog 在工作區自動啟用時,Azure Databricks 會建立一個具有管理儲存位置的工作區目錄。 所有工作空間使用者皆可在工作區目錄的 default 結構中建立受管理的資料表與磁碟區。 欲了解更多關於工作區目錄的資訊,請參閱 「開始使用 Unity 目錄」。
儲存受控資料表和受控磁碟區之數據和元數據的受控儲存位置會使用下列規則:
- 如果包含架構具有受控位置,則數據會儲存在架構受控位置中。
- 如果包含的架構沒有受控位置,但目錄具有受控位置,則數據會儲存在目錄受控位置中。
- 如果包含的架構和包含目錄都沒有管理位置,則數據會儲存在中繼資料庫的管理位置中。
Unity 目錄可防止位置控管重疊。 請參閱 Unity 目錄磁碟區中的路徑規則和存取。
受控儲存位置、記憶體根目錄和儲存位置
當您為目錄或架構指定 MANAGED LOCATION 時,所提供的位置會在 Unity Catalog 中追蹤為 儲存根。 為了確保所有受控實體都有唯一的位置,Unity 目錄會使用下列格式,將哈希子目錄新增至指定的位置:
| 物件 | 路徑 |
|---|---|
| 架構 | <storage-root>/__unitystorage/schemas/00000000-0000-0000-0000-000000000000 |
| 目錄 | <storage-root>/__unitystorage/catalogs/00000000-0000-0000-0000-000000000000 |
管理的儲存位置的完整路徑在 Unity 目錄中被記錄為 儲存位置。
您可以為多個架構和目錄指定相同的受控儲存位置。
必要權限
具有外部位置許可權的使用者 CREATE MANAGED STORAGE 可以在目錄或架構建立期間設定受控記憶體位置。
帳戶管理員可以在中繼資料儲存層級新增選擇性的受管理儲存位置。
擁有權限 MANAGE 的使用者及目錄擁有者可將管理儲存位置加入外部目錄。
若要更改標準目錄或架構的管理儲存位置,您必須是該目錄或架構的擁有者,或對其擁有 MANAGE 權限,並且對目標外部位置擁有 CREATE MANAGED STORAGE 權限。
設定中繼存放區的受控儲存位置
若要設定中繼存放區的受控儲存位置,請參閱 將受控記憶體新增至現有的中繼存放區。
設定標準目錄的受控儲存位置
在目錄建立期間使用 MANAGED LOCATION 關鍵詞設定標準目錄的受控儲存位置,如下列範例所示:
CREATE CATALOG <catalog-name>
MANAGED LOCATION 'abfss://<container-name>@<storage-account>.dfs.core.windows.net/<path>/<directory>';
字串MANAGED LOCATION,包括 URI 協定方案與路徑。 字元必須不超過 512 字元。
您也可以使用目錄總管來設定目錄的受控儲存位置。 請參閱建立目錄。
更改標準目錄的管理儲存位置
適用於:
Databricks SQL
Databricks 執行環境 18.1 及以上版本
若要更改現有目錄的管理儲存位置,請使用 ALTER CATALOG SET MANAGED LOCATION。
備註
更改受管理儲存位置只影響變更後新增的管理資料表和磁碟區。 現有的受管理物件不會被移到新位置。
ALTER CATALOG <catalog-name>
SET MANAGED LOCATION 'abfss://<container-name>@<storage-account>.dfs.core.windows.net/<path>/<directory>';
字串MANAGED LOCATION,包括 URI 協定方案與路徑。 字元必須不超過 512 字元。
設定外部目錄的受控儲存位置
您可以使用目錄總管來設定外部目錄的受控儲存位置。
- 請登入與中繼存放區連結的工作區。
- 按兩下
目錄。
- 在 [ 目錄 ] 窗格中,尋找目錄,然後按下其名稱。
- 在 [記憶體位置] 底下,按兩下 [新增儲存位置]。
- 在 [選取外部位置] 中,選取外部位置或建立新的位置並指定路徑。
- 點選 [儲存]。
設定架構的受控儲存位置
在架構建立期間使用 MANAGED LOCATION 關鍵詞設定架構的受控儲存位置,如下列範例所示:
CREATE SCHEMA <catalog>.<schema-name>
MANAGED LOCATION 'abfss://<container-name>@<storage-account>.dfs.core.windows.net/<path>/<directory>';
字串MANAGED LOCATION,包括 URI 協定方案與路徑。 字元必須不超過 512 字元。
您也可以使用目錄總管來設定架構的受控儲存位置。 請參閱 建立架構。
更改綱目的受管理的儲存位置
適用於:
Databricks SQL
Databricks 執行環境 18.1 及以上版本
若要更改現有結構的管理儲存位置,請使用 ALTER SCHEMA SET MANAGED LOCATION。
備註
更改受管理儲存位置只影響變更後新增的管理資料表和磁碟區。 現有的受管理物件不會被移到新位置。
ALTER SCHEMA <catalog>.<schema-name>
SET MANAGED LOCATION 'abfss://<container-name>@<storage-account>.dfs.core.windows.net/<path>/<directory>';
字串MANAGED LOCATION,包括 URI 協定方案與路徑。 字元必須不超過 512 字元。
下一步
當您建立受控數據表和受控磁碟區時,Unity 目錄會自動使用受控記憶體位置。 請參閱 適用於 Delta Lake 與 Apache Iceberg 的 Unity Catalog 受管資料表以及什麼是 Unity Catalog 磁碟區?。