分享方式:


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

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

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

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

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

注意

當您定義磁碟區時,磁碟區路徑下數據的雲端 URI 存取權是由磁碟區的許可權所控管。

開始之前

先決條件

  • 您必須先建立 Azure Data Lake Storage Gen2 儲存器容器或 Cloudflare R2 貯體,以作為外部位置,才能在 Azure Databricks 中建立外部位置物件。

    您作為外部位置使用的 Azure Data Lake Storage Gen2 儲存器帳戶必須具有階層命名空間。

  • 您必須在 Azure Databricks 中定義記憶體認證,才能存取雲端記憶體位置路徑。 請參閱 建立記憶體認證以連線到 Azure Data Lake Storage Gen2建立用來連線到 Cloudflare R2 的記憶體認證。

權限需求

  • 您必須擁有 CREATE EXTERNAL LOCATION 中繼存放區和外部位置中所參考記憶體認證的許可權。 中繼存放區管理員預設在 CREATE EXTERNAL LOCATION 中繼存放區上。

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

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

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

若要建立外部位置:

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

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

  3. 按兩下 [ + 新增 ] 按鈕,然後選取 [ 新增外部位置]。

  4. 輸入外部位置名稱

  5. 選擇性地從現有的裝入點複製容器路徑(僅限 Azure Data Lake Storage Gen2 容器)。

  6. 如果您未從現有的裝入點複製,請使用 [URL] 字段來輸入您想要作為外部位置的記憶體容器或 R2 貯體路徑。

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

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

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

  9. 按一下 [建立]

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

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

  11. 授與許可權以使用外部位置。

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

    • 若要使用外部位置將受控記憶體位置新增至中繼存放區、目錄或架構,請授與 CREATE MANAGED LOCATION 許可權。
    • 若要建立外部資料表或磁碟區,請授與 CREATE EXTERNAL TABLECREATE EXTERNAL VOLUME

    若要使用目錄總管來授與許可權:

    1. 按兩下外部位置名稱以開啟詳細資料窗格。
    2. 在 [ 許可權] 索引標籤上,按兩下 [ 授與]。
    3. 在 [授與] 對話框上<external location>,選取 [主體] 欄位中的使用者、群組或服務主體,然後選取您要授與的許可權。
    4. 按兩下 [ 授與]。

使用 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 包含敏感數據之外部位置許可權的數據工程師只能使用特定工作區來存取該數據。

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

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

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

需要的許可權:中繼存放區管理員或外部位置擁有者。

注意

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

目錄總管

  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 命令群組撤銷工作區存取權的指示包含在 將外部位置系結至一或多個工作區中。

下一步