共用方式為


建立外部位置以將雲端記憶體連線到 Azure Databricks

本文說明如何在 Unity 目錄中設定外部位置,以將雲端記憶體連線到 Azure Databricks。

外部位置會將 Unity 目錄記憶體認證與雲端物件記憶體容器產生關聯。 外部位置可用來定義目錄和架構的受控儲存位置,以及定義外部數據表和外部磁碟區的位置。

您可以建立參考 Azure Data Lake Storage Gen2 記憶體容器或 Cloudflare R2 貯體中記憶體的外部位置。

您可以使用目錄總管、Databricks CLI、筆記本或 Databricks SQL 查詢中的 SQL 命令,或 Terraform 來建立外部位置。

如需使用外部位置的詳細資訊,以及記憶體認證與外部位置之間的關聯性,請參閱 使用 Unity 目錄管理雲端記憶體的存取權。

開始之前

先決條件

權限需求

  • 您必須擁有 CREATE EXTERNAL LOCATION 中繼存放區和外部位置中所參考記憶體認證的許可權。 中繼存放區管理員預設在 CREATE EXTERNAL LOCATION 中繼存放區上。
  • 如果您要為 DBFS 根記憶體位置建立外部位置,系統可以為您建立記憶體認證,但您必須是工作區管理員。如需詳細資訊,請參閱 為 DBFS 根 中的數據建立外部位置

使用目錄總管手動建立外部位置

您可以使用目錄總管手動建立外部位置。

許可權和必要條件: 請參閱 開始之前。

若要建立外部位置:

  1. 登入附加至中繼存放區的工作區。

  2. 在提要欄位中,按兩下 目錄圖示[目錄]。

  3. 在 [ 快速存取 ] 頁面上,按兩下 [ 外部數據] > 按鈕,移至 [ 外部位置 ] 索引卷標,然後按兩下 [ 建立位置]。

  4. 輸入外部位置名稱

  5. 在 [URL] 下,輸入或選取外部位置的路徑。 您有三個選項:

    • 若要從現有的 DBFS 載入點複製容器路徑,請點擊 [從 DBFS 複製]

    • 若要將子路徑複製到 DBFS 根目錄儲存位置,請按下 [從 DBFS 複製] ,然後選取 [從 DBFS 根目錄複製]。 如果您是工作區管理員,系統也會為您建立記憶體認證。

      請參閱 在 DBFS 根目錄中為資料建立一個外部位置

    • 如果您不是從現有的裝入點或 DBFS 根目錄複製,請使用 [URL] 字段來輸入您要作為外部位置使用的記憶體容器或 R2 貯體路徑。

      例如,abfss://my-container-name@my-storage-account.dfs.core.windows.net/<path>r2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>

  6. 選取授與外部位置存取權的記憶體認證。

    注意

    如果您的外部位置是 DBFS 根目錄,而您是工作區管理員,系統會為您建立記憶體認證,而且您不需要選取一個認證。

    如果您沒有記憶體認證,您可以建立一個:

    1. 在 [記憶體認證] 下拉式清單中,選取 [+ 建立新的記憶體認證

    2. 在 [認證類型] 下拉式清單中,選取您想要在記憶體認證物件中使用的認證類型:Azure 受控識別或 Cloudflare API 令牌。

    3. 針對 Azure 管理的身分識別,輸入存取連接器識別碼和(選擇性地)使用者指派的管理身分識別,以授予儲存位置的存取權。 針對 Cloudflare API 令牌,輸入 Cloudflare 帳戶、存取密鑰標識碼和秘密存取金鑰。

      如需詳細資訊,請參閱 建立記憶體認證以連線至 Azure Data Lake Storage Gen2建立記憶體認證以連線到 Cloudflare R2

  7. (選擇性)如果您想要讓使用者具有外部位置的唯讀存取權,請按兩下 [進階選項 ],然後選取 [ 只讀]。 如需詳細資訊,請參閱 將外部位置標示為唯讀

  8. (選擇性)如果外部位置適用於 Hive 中繼資料庫聯合目錄,請按一下 [進階選項] ,然後啟用 [後援模式]

    請參閱 在外部位置上啟用後援模式

  9. 按一下 [建立]。

  10. (選擇性)將外部位置系結至特定工作區。

    根據預設,任何特殊許可權的使用者都可以在任何附加至中繼存放區的工作區上使用外部位置。 如果您想要只允許從特定工作區存取,請移至 [ 工作區] 索引 標籤並指派工作區。 請參閱 (選擇性) 將外部位置指派給特定工作區

  11. 移至[權限] 索引標籤,以取得使用外部位置的權限。

    若要讓任何人使用外部位置,您必須授與許可權:

    • 若要使用外部位置將受控記憶體位置新增至中繼存放區、目錄或架構,請授與 CREATE MANAGED LOCATION 許可權。
    • 若要建立外部資料表或磁碟區,請授與 CREATE EXTERNAL TABLECREATE EXTERNAL VOLUME
    1. 按一下 [授與]
    2. 在 [授與] 對話框上<external location>,選取 [主體] 欄位中的使用者、群組或服務主體,然後選取您要授與的許可權。
    3. 按一下 [授與]

使用 SQL 建立外部位置

若要使用 SQL 建立外部位置,請在筆記本或 SQL 查詢編輯器中執行下列命令。 取代預留位置值。 如需必要的許可權和必要條件,請參閱 開始之前。

  • <location-name>:外部位置的名稱。 如果 location_name 包含特殊字元,例如連字元 (-),它必須以反引號 (` `) 括住。 請參閱名稱

  • <bucket-path>:此外部位置授與存取權的雲端租用戶路徑。 例如,abfss://my-container-name@my-storage-account.dfs.core.windows.net/<path>r2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>

  • <storage-credential-name>:授權讀取和寫入記憶體容器或貯體路徑的記憶體認證名稱。 如果記憶體認證名稱包含特殊字元,例如連字元 (-),則必須以反引號 (` `) 括住。

CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<bucket-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];

如果您想要限制帳戶中特定工作區的外部位置存取,也稱為工作區系結或外部位置隔離,請參閱 (選擇性) 將外部位置指派給特定工作區

(選擇性)將外部位置指派給特定工作區

重要

這項功能處於公開預覽狀態

根據預設,外部位置可從中繼存放區中的所有工作區存取。 這表示如果使用者已獲授與該外部位置的許可權(例如 READ FILES),他們可以從附加至中繼存放區的任何工作區中行使該許可權。 如果您使用工作區來隔離用戶數據存取,您可能只想要允許從特定工作區存取外部位置。 這項功能稱為工作區系結或外部位置隔離。

將外部位置系結至特定工作區的典型使用案例包括:

  • 確保擁有 CREATE EXTERNAL TABLE 包含生產數據之外部位置許可權的數據工程師只能在生產工作區中在該位置上建立外部數據表。
  • 確保擁有 READ FILES 包含敏感數據之外部位置許可權的數據工程師只能使用特定工作區來存取該數據。

如需如何依工作區限制其他類型的數據存取的詳細資訊,請參閱 限制特定工作區的目錄存取。

重要

當對外部位置執行許可權時,會參考工作區系結。 例如,如果使用者從CREATE TABLE myCat.mySch.myTable LOCATION 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance'工作區發出 語句myWorkspace來建立外部數據表,除了一般使用者許可權檢查之外,也會執行下列工作區系結檢查:

  • 涵蓋的外部位置 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance' 是否系結至 myWorkspace
  • 目錄myCat是否與存取層級myWorkspace系結Read & Write

如果外部位置隨後從 myWorkspace取消系結,則外部數據表會繼續運作。

這項功能也可讓您從中央工作區填入目錄,並使用目錄系結提供給其他工作區使用,而不需要讓外部位置可在這些其他工作區中使用。

將外部位置系結至一或多個工作區

若要將外部位置指派給特定工作區,您可以使用目錄總管或 Databricks CLI。

所需的許可權:中繼資料庫管理員、外部位置擁有者或外部位置上的 MANAGE

注意

中繼存放區管理員可以使用目錄總管查看中繼存放區中的所有外部位置,而外部位置擁有者可以看到他們在中繼存放區中擁有的所有外部位置,而不論外部位置是否指派給目前的工作區。 未指派給工作區的外部位置會顯示為灰色。

目錄總管

  1. 登入連結至中繼存放區的工作區。

  2. 在提要欄位中,按兩下 目錄圖示[目錄]。

  3. 在 [ 快速存取] 頁面上,按兩下 [ 外部數據] > 按鈕以移至 [ 外部位置] 索引卷 標。

  4. 選取外部位置,然後移至 [ 工作區] 索引標籤

  5. 在 [ 工作區] 索引 標籤上,清除 [ 所有工作區都有存取權 ] 複選框。

    如果您的外部位置已經系結至一或多個工作區,則會清除此複選框。

  6. 按兩下 [ 指派給工作區 ],然後輸入或尋找您想要指派的工作區。

若要撤銷存取權,請移至 [ 工作區] 索引 卷標,選取工作區,然後按兩下 [ 撤銷]。 若要允許從所有工作區存取,請選取 [ 所有工作區都有存取 權] 複選框。

CLI

有兩 個 Databricks CLI 命令群組,以及將外部位置指派給工作區所需的兩個步驟。

在下列範例中,將 取代 <profile-name> 為您的 Azure Databricks 驗證組態配置檔名稱。 它應該包含個人存取令牌的值,以及您產生個人存取令牌之工作區的工作區實例名稱和工作區標識符。 請參閱 Azure Databricks 個人存取權杖驗證

  1. external-locations使用命令群組的 update 指令,將外部位置的 isolation mode 設定為 ISOLATED

    databricks external-locations update <my-location> \
    --isolation-mode ISOLATED \
    --profile <profile-name>
    

    預設值 isolation-modeOPEN 附加至中繼存放區的所有工作區。

  2. workspace-bindings使用命令群組的 update-bindings 命令,將工作區指派給外部位置:

    databricks workspace-bindings update-bindings external-location <my-location> \
    --json '{
      "add": [{"workspace_id": <workspace-id>}...],
      "remove": [{"workspace_id": <workspace-id>}...]
    }' --profile <profile-name>
    

    "add"使用和 "remove" 屬性來新增或移除工作區系結。

    注意

    唯讀系結 (BINDING_TYPE_READ_ONLY) 不適用於外部位置。 因此,沒有理由設定 binding_type 外部位置系結。

若要列出外部位置的所有工作區指派,請使用 workspace-bindings 命令群組的 get-bindings 命令:

databricks workspace-bindings get-bindings external-location <my-location> \
--profile <profile-name>

請參閱 REST API 參考中的工作區系結

從工作區解除系結外部位置

使用目錄總管或 workspace-bindings CLI 命令群組撤銷工作區存取權的指示包含在 將外部位置系結至一或多個工作區中。

下一步