本頁說明 Unity 目錄中路徑重疊的限制、詳細說明 Unity 目錄物件中資料檔的路徑型存取模式,並說明 Unity 目錄如何管理資料表和磁碟區的路徑。
Unity 目錄中的路徑重疊限制
Unity 目錄會藉由防止受管理的數據目錄重疊來強制執行數據控管。 Unity 目錄會強制執行下列規則:
- 外部位置不能與其他外部位置重疊。
- 數據表和儲存區會將數據檔儲存在外部位置,或中繼資料庫根目錄。
- 磁碟區不能與其他磁碟區重疊。
- 資料表不能與其他資料表重疊。
- 資料表和磁碟區不能彼此重疊。
- 受管理的儲存位置不能彼此重疊。 請參閱 在 Unity 目錄中指定受控儲存位置。
- 外部磁碟區無法與受管理的儲存位置重疊。
- 外部資料表不能與受管理的儲存位置重疊。
這些規則表示 Unity 目錄中存在下列限制:
- 您無法在另一個外部位置內定義外部位置。
- 您無法在另一個磁碟區內定義磁碟區。
- 您無法在另一個資料表中定義資料表。
- 您無法在磁碟區內的任何資料檔案或目錄上定義資料表。
- 您無法在資料表內的目錄上定義磁碟區。
備註
您總是可以使用路徑型存取來從磁碟區寫入或讀取資料檔案,包括「Delta Lake」。 您無法將這些資料檔註冊為 Unity 目錄中繼存放區中的資料表。
資料表和磁碟區的完全受管路徑
當您建立受控數據表或受控磁碟區時,Unity 目錄會在與包含架構相關聯的 Unity 目錄設定儲存位置中建立新目錄。 隨機產生此目錄的名稱,以避免與已經存在的其他目錄發生任何潛在衝突。 此行為與Hive中繼存放區建立受控數據表的方式不同。
不支援基於路徑的 Unity 目錄管理資料表存取。 務必使用資料表名稱與 Unity 目錄管理的資料表互動,並使用磁碟區路徑與 Unity 目錄管理的磁碟區互動。
表格和磁區的外部位置路徑
當您建立外部資料表或磁碟區時,您可以在 Unity 目錄所控管的外部位置內指定路徑。
這很重要
若要避免路徑衝突,Databricks 建議在子目錄中建立外部資料表和磁碟區,而不是在外部位置的根目錄中建立外部資料表和磁碟區。
為了方便使用,請使用資料表名稱與 Unity 目錄外部資料表互動,並使用磁碟區路徑與外部磁碟區互動。 擁有足夠權限的使用者也可以使用完整的雲端儲存路徑直接存取資料。
透過這些物件的雲端 URI 存取資料完全受 Unity 目錄許可權控管,這些許可權會覆寫外部位置本身的任何許可權。 請參閱 Unity 目錄中的路徑重疊限制 和 Unity 目錄許可權和安全性實體物件。
存取 Unity 目錄中的資料
Unity 目錄物件可透過物件標識碼、磁碟區路徑或雲端 URI 來存取資料。 您可以使用這些值來存取與磁碟區和數據表相關聯的數據。
Unity 目錄資料表是使用具有下列模式的三層識別碼來存取:
<catalog_name>.<schema_name>.<table_name>
Unity 目錄中的磁碟區檔案路徑
磁碟區提供檔案路徑,以下列模式存取資料檔:
/Volumes/<catalog_name>/<schema_name>/<volume_name>/<path_to_file>
雲端 URI 要求使用者提供目標檔案的驅動程式、記憶體容器識別碼和完整路徑,如下列範例所示:
abfss://<container_name>@<storage_account>.dfs.core.windows.net/<path>
下表顯示 Unity Catalog 物件允許的存取方法:
| 物體 | 物件標識碼 | 檔案路徑 | 雲端 URI |
|---|---|---|---|
| 外部地點 | 否 | 否 | 是的 |
| 受管理的資料表 | 是的 | 否 | 否 |
| 外部數據表 | 是的 | 否 | 是的 |
| 管理的磁碟區 | 否 | 是的 | 否 |
| 外部音量 | 否 | 是的 | 是的 |
備註
Unity 目錄磁碟區使用三層物件識別碼搭配下列模式來管理命令(例如 CREATE VOLUME 和 DROP VOLUME):
<catalog_name>.<schema_name>.<volume_name>
若要實際使用磁碟區中的檔案,您必須使用路徑型存取。