全部產品
Search
文件中心

E-MapReduce:通過Unity Catalog中的Delta Sharing訪問Databricks資料

更新時間:Jan 06, 2026

本文介紹如何配置阿里雲EMR Serverless Spark,通過Databricks Unity Catalog的Delta Sharing,實現對共用資料的跨雲唯讀訪問。該方案旨在協助您打破資料孤島,支援跨雲資料分析、資料同步等多種業務情境。

核心流程

整個過程涉及在 Databricks 端配置資料共用,並將訪問憑證提供給阿里雲 EMR Serverless Spark 任務進行調用。

  1. Databricks 端:建立 共用 (Share) 接收者 (Recipient),將需要共用的資料表添加到 共用 (Share) 中,並為 接收者 (Recipient) 產生一個包含存取權杖的憑證檔案 (Credential File)。

  2. 憑證傳遞:將下載的憑證檔案上傳至阿里雲Object Storage Service,以便 Spark 任務讀取。

  3. Serverless Spark 端:建立並運行一個 Spark 任務,該任務配置了 Delta Sharing 連接器,通過讀取 OSS 上的憑證檔案,經由公網訪問 Databricks 的資料共用端點,拉取資料進行計算。

操作步驟

步驟一:在 Databricks 中配置資料共用

此步驟的目的是在 Databricks 中定義要共用的資料範圍,並為外部存取建立一個安全的憑證。

  1. 建立共用 (Share)

    • 登入 Databricks 工作空間,在左側導覽列進入 Catalog > Delta Sharing > Shared by meimage

    • 點擊 Shared data,建立一個新的 ShareShare 是用於組織和管理待共用資料表的邏輯容器。image

  2. 添加資料資產 (Assets)

    • 在建立的 共用 (Share) 中,輸入Share name後,添加資料資產。

    • 選擇您希望對外共用的一個或多個資料表。

      Serverless Spark訪問共用資料時會使用到剛剛配置的Share name和相應的庫表。image

  3. 建立接收者 (Recipient)

    • 如果之前沒有建立接收者 (Recipient),可以在下拉式清單中選擇建立接收者 (Recipient)。也可以返回 共用 (Share) 詳情頁,點擊 Add recipient 以建立一個新的資料 接收者 (Recipient)

      image

  4. 配置接收者並產生憑證檔案

    • 接收者 (Recipient) 產生一個包含存取權杖的憑證檔案 (Credential File)。

      image

      • 接收者類型:選擇Open類型。Open 類型用於與任何支援 Delta Sharing 協議的用戶端(如 EMR Serverless Spark)進行開放共用,它會產生一個可移植的憑證檔案。Databricks 類型則用於 Databricks 平台之間的內部共用。

        說明

        確保Recipient type是Open,如果Open框不可選,需要在右上方organization -> View Delta Sharing Settings中Enable External delta sharing imageimage

      • 認證方式:選擇Token類型。

      • Token生命週期:設定Token有效期間,最長支援365天。

    • 建立完成後,系統會產生一個啟用 Token連結 (Activation link)

  5. 下載憑證檔案

    • 在瀏覽器中開啟上一步產生的 Activation link,系統將提示您下載一個以 .share 為尾碼的憑證檔案。image

步驟二:準備阿里雲環境

此步驟的目的是將 Databricks 產生的憑證安全地儲存在阿里雲上,並為 Spark 任務準備好運行環境。

  1. 上傳憑證檔案至 OSS

    • 將上一步下載的 .share憑證檔案上傳到您的 OSS Bucket 中。

    • 記錄該檔案的完整 OSS 路徑,例如 oss://your-bucket/path/to/credential.share

      說明

      安全建議

      • 建議將憑證檔案儲存體在私人許可權的 Bucket 中。

      • 確保後續運行 Spark 任務的 RAM 角色具有該 OSS 檔案的讀取許可權。

  2. 配置公網訪問

    準備一個具備公網訪問能力的Virtual Private Cloud,並配置適用於 Serverless Spark 的交換器,以支援 Serverless Spark 通過公網訪問 Databricks Delta Sharing。阿里雲提供公網 NAT Gateway以實現 VPC 的公網訪問,詳細操作請參見公網 NAT Gateway。Serverless Spark支援的可用性區域交換器,請參見支援的可用性區域交換器列表

步驟三:在 Serverless Spark 中訪問資料

此步驟的核心是編寫並配置一個 Spark 任務,使其能夠利用 憑證檔案 讀取 Databricks 資料。

  1. 添加網路連接

    在工作空間中新增網路連接時,請選擇前期配置的支援公網訪問的專用網路及其對應的交換器。詳細操作請參見新增網路連接

  2. 準備並上傳SQL檔案

    • 準備SQL檔案,將共用資料集寫入DLF。

      -- 建立暫存資料表
      -- 替換 憑證檔案 地址和 share 資料集
      -- demo_share 是前面建立 共用 (Share) 的名稱
      -- default.alitable  是前面共用的庫表
      CREATE TEMPORARY TABLE dbc_delta_sharing USING deltaSharing LOCATION 'oss://your-bucket/path/to/credential.share#demo_share.default.alitable';
      SELECT * FROM dbc_delta_sharing limit 10;
      
      -- 建立資料庫和表
      CREATE database if NOT EXISTS demo_day_ss_dlf;
      DROP TABLE if EXISTS demo_day_ss_dlf.dw_songs_ss_dlf;
      
      CREATE TABLE demo_day_ss_dlf.dw_songs_ss_dlf SELECT * FROM dbc_delta_sharing limit 10;
      SELECT * FROM demo_day_ss_dlf.dw_songs_ss_dlf limit 10;
    • 通過檔案管理,將SQL檔案上傳至Serverless Spark的工作空間。詳細操作請參見管理檔案

  3. 添加資料目錄

    在添加資料目錄對話方塊中,選擇DLF資料目錄。資料目錄詳細操作,請參見管理資料目錄

  4. 建立 Spark 任務

    Notebook任務

    • 建立Notebook會話

      在會話管理頁面,建立Notebook會話,配置以下參數,其餘參數預設。

      參數

      說明

      名稱

      輸入Notebook會話的名稱。

      引擎版本

      推薦使用最新版本。本文使用esr-4.6.0版本。

      網路連接

      選擇已建立的網路連接。

      Spark配置

      添加以下配置參數。

      spark.jars.packages              io.delta:delta-sharing-spark_2.12:3.1.0
      spark.sql.extensions             io.delta.sql.DeltaSparkSessionExtension,org.apache.paimon.spark.extensions.PaimonSparkSessionExtensions
      spark.sql.catalog.spark_catalog  org.apache.spark.sql.delta.catalog.DeltaCatalog
    • 建立Notebook任務

      在資料開發頁面,建立類型為互動式開發的Notebook任務。並複製以下代碼儲存。

      -- 建立暫存資料表
      -- 替換 憑證檔案 地址和 share 資料集
      -- demo_share 是前面建立 共用 (Share) 的名稱
      -- default.alitable  是前面共用的庫表
      spark.sql("CREATE TEMPORARY TABLE dbc_delta_sharing USING deltaSharing LOCATION 'oss://your-bucket/path/to/credential.share#demo_share.default.alitable';")
      
      spark.sql("SELECT * FROM dbc_delta_sharing limit 10;").show()
    • 查看運行結果

      運行任務後,結果如下。image

    SQL任務

    在資料開發頁面,建立類型為批任務的SQL任務。建立SQL任務,請參見批任務或流任務開發

    • 配置任務參數

      在任務配置頁面,配置以下參數,其餘參數預設。

      參數

      說明

      SQL檔案

      提交任務時所需的檔案。

      類型選擇工作空間資源,在下拉式清單中上傳前面的SQL檔案。

      引擎版本

      推薦使用最新版本。本文使用esr-4.6.0版本。

      網路連接

      選擇已建立的網路連接。

      Spark配置

      添加以下配置參數。

      spark.jars.packages              io.delta:delta-sharing-spark_2.12:3.1.0
      spark.sql.extensions             io.delta.sql.DeltaSparkSessionExtension,org.apache.paimon.spark.extensions.PaimonSparkSessionExtensions
      spark.sql.catalog.spark_catalog  org.apache.spark.sql.delta.catalog.DeltaCatalog
    • 運行任務並查看結果

      • 單擊運行提交任務。運行任務後,在下方的運行記錄地區,單擊任務操作列的日誌探查,您可以查看相關的日誌資訊。image

      • 查詢DLF資料。image

相關文檔

更多Spark任務類型讀取Databricks Delta Sharing的使用方法,請參考delta-sharing