分享方式:


設定和管理 Unity 目錄

本文說明如何設定和使用 Unity Catalog 來管理 Azure Databricks 工作區中的資料。 主要適用於第一次使用 Unity Catalog 的工作區系統管理員。

本文結束時,您將擁有:

  • 已為 Unity Catalog 啟用的工作區。
  • 可存取 Unity Catalog 的計算。
  • 有權在 Unity Catalog 中存取和建立物件的使用者。

您可能還想要檢閱其他介紹文章:

注意

如果要將現有的非 Unity Catalog 工作區升級至 Unity Catalog,您可以從使用 UCX (Databricks Labs 專案) 中受益,該專案提供一組工作流程和公用程式,用於將身分識別、權限和資料表升級至 Unity Catalog。 請參閱使用 UCX 公用程式將工作區升級至 Unity Catalog

Unity Catalog 啟用概觀

若要使用 Unity Catalog,必須為 Unity Catalog 啟用 Azure Databricks 工作區,這意味著將工作區連結至 Unity Catalog 中繼存放區 (Unity Catalog 中繼資料的最上層容器)。

管理員設定 Unity Catalog 的方式取決於工作區是自動為 Unity Catalog 啟用還是需要手動啟用。

自動啟用 Unity Catalog

Databricks 於 2023 年 11 月 9 日自動為 Unity Catalog 啟用了新工作區,並逐步跨帳戶推出。 自動啟用的工作區具有下列屬性:

  • 自動佈建的 Unity Catalog 中繼存放區 (除非工作區區域已存在 Unity Catalog 中繼存放區)。

  • 工作區管理員的預設權限,例如可以建立目錄或外部資料庫連線的能力。

  • 沒有中繼存放區管理員 (除非使用了現有的 Unity Catalog 中繼存放區,並且已指派中繼存放區管理員)。

  • 沒有受控資料表和受控磁碟區的中繼存放區層級儲存體 (除非使用了具有中繼存放區層級儲存體的現有 Unity Catalog 中繼存放區)。

  • 工作區目錄在最初佈建時以您的工作區命名。

    工作區中的所有使用者都可以在此目錄中的 default 結構描述中建立資產。 根據預設,此目錄會繫結至您的工作區,這意味著只能透過工作區存取它。 在建立工作區時自動佈建工作區目錄的功能正在逐步跨帳戶推出。

這些預設組態適用於大多數工作區,但全部可以由工作區管理員或帳戶管理員進行修改。例如,帳戶管理員可以指派中繼存放區管理員並建立中繼存放區層級儲存體,工作區管理員則可以修改工作區目錄名稱和存取權。

如果未自動為 Unity Catalog 啟用工作區,該怎麼辦?

如果未自動為 Unity Catalog 啟用您的工作區,帳戶管理員或中繼存放區管理員必須手動將工作區連結至相同區域中的 Unity Catalog 中繼存放區。 如果 Unity 目錄中繼存放區不存在於區域中,帳戶管理員必須建立一個中繼存放區。 如需指示,請參閱 建立 Unity 目錄中繼存放區

如何知道是否已為 Unity Catalog 啟用我的工作區?

若要確認是否已為 Unity Catalog 啟用您的工作區,請讓 Azure Databricks 工作區管理員或帳戶管理員為您檢查。 另請參閱步驟 1:確認已為 Unity Catalog 啟用您的工作區

如何知道我的工作區是否包含工作區目錄

某些新的工作區具有工作區目錄,它們在最初佈建時以您的工作區命名。 若要確定您的工作區是否具有目錄,請按一下側邊欄中的 目錄圖示 [目錄] 以開啟目錄總管,然後搜尋使用您的工作區名稱作為目錄名稱的目錄。

注意

工作區目錄與 Unity Catalog 中的任何其他目錄類似:工作區管理員可以變更其名稱、變更其所有權,甚至將其刪除。 但是,在建立工作區後,它會立即使用工作區名稱

開始之前

在開始本文所述的工作之前,您應熟悉基本 Unity Catalog 概念,包括中繼存放區、系統管理員角色和受控儲存體。 請參閱什麼是 Unity Catalog?

您也應確認您符合下列需求:

  • 進階方案上的 Azure Databricks 工作區。

  • 下列角色和權限 (取決於您的工作區狀態):

    • 工作區管理員:如果在建立工作區時已自動為 Unity Catalog 啟用工作區,則您必須是工作區管理員才能完成所需的工作。

    • 帳戶管理員:如果尚未為 Unity Catalog 啟用工作區,則帳戶管理員必須將工作區連結至中繼存放區。

      如果工作區所在的區域中沒有 Unity Catalog 中繼存放區,帳戶管理員也必須建立 Unity Catalog 中繼存放區。

      有關確定工作區區域是否存在中繼存放區的指示以及如何建立中繼存放區的指示,請遵循本文。

    請參閱 Unity Catalog 中的管理員權限自動啟用 Unity Catalog

步驟 1:確認已為 Unity Catalog 啟用工作區

在此步驟中,您將確定是否已為 Unity Catalog 啟用工作區,啟用定義為將 Unity Catalog 中繼存放區連結至工作區。 如果未為 Unity Catalog 啟用您的工作區,您必須手動為 Unity Catalog 啟用您的工作區。 請參閱未為 Unity Catalog 啟用您的工作區時的後續步驟

若要確認,請執行下列其中一項動作。

使用帳戶主控台確認 Unity Catalog 啟用

  1. 身為 Azure Databricks 帳戶管理員,登入帳戶主控台。
  2. 按一下 工作區圖示 [工作區]
  3. 尋找您的工作區,並檢查 [中繼存放區] 資料行。 如果存在中繼存放區名稱,則您的工作區已連結至 Unity Catalog 中繼存放區,因此已為 Unity Catalog 啟用。

執行 SQL 查詢以確認 Unity Catalog 啟用

在 SQL 查詢編輯器或連結至使用共用單一使用者存取模式的叢集的筆記本中,執行下列 SQL 查詢。 請參閱存取模式。 不需要系統管理員角色。

SELECT CURRENT_METASTORE();

如果查詢傳回如下所示的中繼存放區識別碼,則您的工作區已連結至 Unity Catalog 中繼存放區,因此已為 Unity Catalog 啟用。

目前中繼存放區輸出

未為 Unity Catalog 啟用您的工作區時的後續步驟

如果未為 Unity Catalog (連結至中繼存放區) 啟用您的工作區,則下一步取決於您是否已為您的工作區區域定義 Unity Catalog 中繼存放區:

  • 如果您的帳戶已為您的工作區區域定義 Unity Catalog 中繼存放區,您只需將工作區連結至現有中繼存放區。 移至為 Unity Catalog 啟用工作區
  • 如果沒有為您工作區的區域定義的 Unity Catalog 中繼存放區,您必須建立中繼存放區,然後連結工作區。 移至建立 Unity Catalog 中繼存放區

為 Unity Catalog 啟用工作區後,移至下一步。

步驟 2:新增使用者並指派工作區管理員角色

建立工作區的使用者將自動新增為具有工作區管理員角色的工作區使用者 (即 admins 工作區本機群組中的使用者)。 作為工作區管理員,您可以向工作區新增和邀請使用者加入工作區,可以向其他使用者作業工作區管理員角色,並且可以建立服務主體和群組。

帳戶管理員還可以將使用者、服務主體和群組新增至您的工作區。 他們可以授與帳戶管理員和中繼存放區管理員角色。

如需詳細資料,請參閱管理使用者

透過從 Microsoft Entra ID 設定佈建,可以方便地管理使用者對 Azure Databricks 的存取。 如需完整指示,請參閱從 Microsoft Entra ID 同步使用者和群組

步驟 3:建立使用者可用於執行查詢和建立物件的叢集或 SQL 倉儲

若要執行 Unity Catalog 工作負載,計算資源必須符合特定安全性需求。 不相容的計算資源無法存取 Unity Catalog 中的資料或其他物件。 SQL 倉儲將始終符合 Unity Catalog 需求,但某些叢集存取模式則不是這樣。 請參閱存取模式

作為工作區管理員,您可以選擇將計算建立限制為管理員,或可讓使用者建立自己的 SQL 倉儲和叢集。 您還可以建立叢集原則,以讓使用者使用您強制執行的符合 Unity Catalog 的規格建立自己的叢集。 請參閱計算權限建立和管理計算原則

步驟 4:向使用者授與權限

若要在 Unity Catalog 目錄和結構描述中建立物件並對其進行存取,使用者必須具有執行此作業的權限。 本節說明預設授與某些工作區的使用者和管理員權限,並說明如何授與其他權限。

預設使用者權限

某些工作區在啟動時具有預設使用者 (非管理員) 權限:

  • 如果您的工作區在啟動時具有自動佈建的工作區目錄,則所有工作區使用者都可以在工作區目錄的 default 結構描述中建立物件。

    若要了解如何確定工作區是否具有工作區目錄,請參閱如何知道我的工作區是否包含工作區目錄?

  • 如果已為 Unity Catalog 手動啟用您的工作區,則會自動佈建 main 目錄。

    工作區使用者具有對 USE CATALOG 目錄的 main 權限,此權限不授與在目錄中建立或選取任何物件的能力,但卻是使用目錄中任何物件的必要條件。 根據預設,建立中繼存放區的使用者擁有 main 目錄,並且可以向其他使用者轉移所有權和授與存取權。

    如果在建立中繼存放區後新增中繼存放區儲存體,則不會佈建任何 main 目錄。

其他工作區預設不建立目錄,預設不啟用非管理使用者權限。 工作區管理員必須建立第一個目錄,並向使用者授與對其及其中物件的存取權。 先直接跳至步驟 5:建立新的目錄和結構描述,然後再完成本節中的步驟。

預設管理員權限

某些工作區在啟動時具有預設工作區管理員權限:

  • 如果已自動為 Unity Catalog 啟用工作區:
    • 工作區管理員可以在新目錄中建立新的目錄和物件,並向其授與存取權。
    • 根據預設,沒有中繼存放區管理員。
    • 工作區管理員擁有工作區目錄 (如果有),且可以授與對該目錄和該目錄中任何物件的存取權。
  • 如果已手動為 Unity Catalog 啟用工作區:
    • 根據預設,工作區管理員沒有特殊的 Unity Catalog 權限。
    • 中繼存放區管理員必須存在且可以建立任何 Unity Catalog 物件,還可以取得任何 Unity Catalog 物件的所有權。

如需在自動啟用的 Unity Catalog 工作區中向工作區管理員授與的其他物件權限的清單,請參閱自動為 Unity Catalog 啟用工作區時的工作區管理員權限

授與權限

若要存取前幾節中列出的那些物件之外的物件,特殊權限使用者必須授與該存取權。

例如,若要授與群組在 my-catalog 中建立新結構描述的權限,目錄擁有者可以在 SQL 編輯器或筆記本中執行下列命令:

GRANT CREATE SCHEMA ON my-catalog TO `data-consumers`;

如果已自動為 Unity Catalog 啟用工作區,則工作區管理員將擁有工作區目錄,且可以授與建立新結構描述的權限:

GRANT CREATE SCHEMA ON <workspace-catalog> TO `data-consumers`;

您也可以使用目錄總管授與和撤銷權限。

重要

您無法向工作區本機 usersadmins 群組授與權限。 若要向群組授與權限,它們必須是帳戶層級群組。

如需有關在 Unity Catalog 中管理權限的詳細資料,請參閱管理 Unity Catalog 中的權限

步驟 5:建立新的目錄和結構描述

若要開始使用 Unity Catalog,您必須至少定義一個目錄。 目錄是 Unity Catalog 中資料隔離和組織的主要單位。 所有結構描述和資料表都位於目錄中,磁碟區、檢視和模型也一樣。

某些工作區沒有自動佈建的目錄。 若要使用 Unity Catalog,工作區管理員必須為此類工作區建立第一個目錄。

其他工作區有權存取預先佈建的目錄,您的使用者可以存取該目錄以開始使用 (工作區目錄或 main 目錄,具體取決於為 Unity Catalog 啟用工作區的方式)。 在 Azure Databricks 中新增更多資料和 AI 資產時,您可以建立其他目錄來對這些資產進行分組,以便於對資料進行邏輯控管。

如需有關如何最好地使用目錄和結構描述來組織資料和 AI 資產的建議,請參閱 Unity Catalog 最佳做法

作為中繼存放區管理員、工作區管理員 (僅限自動啟用的工作區) 或其他具有 CREATE CATALOG 權限的使用者,您可以在中繼存放區中建立新目錄。 執行此作業時,您應:

  1. 為新的目錄建立受控儲存體

    受控儲存體是 Azure 帳戶中用於受控資料表和受控磁碟區的專用儲存位置。 您可以將受控儲存體指派給中繼存放區、目錄和結構描述。 當使用者建立資料表時,資料儲存在階層中最低的儲存位置。 例如,如果為中繼存放區和目錄 (但沒有為結構描述) 定義儲存位置,則資料會儲存在為目錄定義的位置中。

    Databricks 建議在目錄層級指派受控儲存體,因為目錄通常表示資料隔離的邏輯單元。 如果熟悉共用同一儲存位置的多個目錄中的資料,您可以預設為中繼存放區儲存位置。 如果已自動為 Unity Catalog 啟用工作區,則根據預設沒有中繼存放區層級儲存體。 帳戶管理員可以選擇設定中繼存放區層級儲存體。 請參閱在 Unity Catalog 中指定受控儲存位置將受控儲存體新增至現有的中繼存放區

    將受控儲存體指派給目錄需要您建立:

    • 儲存體認證
    • 參考該儲存體認證的外部位置

    如需這些物件的簡介和建立這些物件的指示,請參閱使用 Unity Catalog 連線到雲端物件儲存體

  2. 如果您要限制共用相同中繼存放區的其他工作區的存取,請將新目錄繫結至工作區。

    請參閱限制特定工作區的目錄存取

  3. 授與對目錄的權限。

如需詳細指示,請參閱建立目錄

目錄建立範例

下列範例示範如何建立具有受控儲存體的目錄,然後示範如何授與對目錄的 SELECT 權限:

CREATE CATALOG IF NOT EXISTS mycatalog
  MANAGED LOCATION 'abfss://mycontainer@<myaccount.dfs.core.windows.net//depts/finance';

GRANT SELECT ON mycatalog TO `finance-team`;

如需更多範例 (包括有關使用目錄總管建立目錄的指示),請參閱建立目錄

建立結構描述

結構描述表示比目錄更精細的分組 (例如部門或專案)。 目錄中的所有資料表和其他 Unity Catalog 物件都包含在結構描述中。 作為新目錄的擁有者,您可能想要在目錄中建立結構描述。 但是,您可能希望改為將建立結構描述的能力委派給其他使用者,方法是向其授與對目錄的 CREATE SCHEMA 權限。

如需詳細指示,請參閱建立結構描述

(選用) 指派中繼存放區管理員角色

如果已自動為 Unity Catalog 啟用工作區,則根據預設不會指派中繼存放區管理員角色。 中繼存放區管理員具有工作區管理員所不具有的一些權限。

如果需要執行以下作業,則可能需要指派中繼存放區管理員:

如需有關中繼存放區管理員角色及指派該角色的指示的詳細資訊,請參閱指派中繼存放區管理員

如何將 Hive 中繼存放區中的資料表升級至 Unity Catalog 資料表

如果您的工作區在為 Unity Catalog 啟用之前已在服務中,它可能具有 Hive 中繼存放區,其中包含您想要繼續使用的資料。 Databricks 建議您將 Hive 中繼存放區管理的資料表移轉至 Unity Catalog 中繼存放區。

請參閱升級 Unity Catalog 中的資料表和檢視使用 UCX 公用程式將工作區升級至 Unity Catalog

(選用) 繼續使用 Hive 中繼存放區

如果工作區具有包含您要繼續使用的資料的 Hive 中繼存放區,並且您選擇不遵循將 Hive 中繼存放區管理的資料表升級至 Unity Catalog 中繼存放區的建議,則可以繼續處理 Hive 中繼存放區中的資料以及 Unity Catalog 中繼存放區中的資料。

Hive 中繼存放區在 Unity Catalog 介面中表示為名為 hive_metastore 的目錄。 為了繼續處理 Hive 中繼存放區中的資料,而不必更新查詢以指定 hive_metastore 目錄,您可以將工作區的預設目錄設定為 hive_metastore。 請參閱 管理預設目錄

根據為 Unity Catalog 啟用工作區的時間,預設目錄可能已經為 hive_metastore

(可選) 建立中繼存放區層級儲存體

雖然 Databricks 建議您為中繼存放區中的每個目錄建立個別受控儲存位置 (也可以對結構描述執行相同的作業),但您可以選擇改為在中繼存放區層級建立受控位置,並將其用作多個目錄和結構描述的儲存體。

如果需要中繼存放區層級儲存體,您還必須指派中繼存放區管理員。請參閱 (選用) 指派中繼存放區管理員角色

僅當滿足下列條件時,才需要中繼存放區層級儲存體:

如需有關受控儲存位置階層的詳細資訊,請參閱在儲存體中實體分離資料

若要了解如何將中繼存放區層級儲存體新增至沒有的中繼存放區,請參閱將受控儲存體新增至現有的中繼存放區

注意

2023 年 11 月 9 日之前為 Unity Catalog 啟用的大多數工作區都具有中繼存放區層級的儲存體根目錄。

下一步