設定從 Azure Data Lake Storage 進行增量導入

本文描述如何將 Azure Data Lake Storage 的增量資料載入設定到 Azure Databricks。 您將瞭解如何安全地存取與 Unity 目錄磁碟區(建議)或 Unity 目錄外部位置對應的雲端物件儲存位置中的源數據。 接著,你會學會如何利用 Auto Loader 搭配 Lakeflow pipelines ,逐步將資料匯入 Unity Catalog 管理的表格。

注意

若要在 Databricks SQL 中設定增量擷取,而非在筆記本中,請參見 使用獨立串流資料表。

Requirements

如果您不是系統管理員,本文假設系統管理員已提供您以下資訊:

  • 已啟用 Unity Catalog 的 Azure Databricks 工作區存取。 如需詳細資訊,請參閱 開始使用 Unity 目錄。

  • Unity Catalog 外部磁碟區上的 READ VOLUME 許可權,或與包含您源數據的雲端儲存位置相對應的 Unity Catalog 外部位置的 READ FILES 許可權。 如需詳細資訊,請參閱 授予外部位置的許可

  • 來源資料的路徑。

    磁碟區路徑範例:/Volumes/<catalog>/<schema>/<volume>/<path>/<folder>

    外部位置路徑範例:abfss://<container>@<storage-account>.dfs.core.windows.net/<folder>

  • USE SCHEMA 和 CREATE TABLE 架構中您要載入資料的許可權。

  • 叢集建立許可權 或存取定義管線叢集的叢集政策( 欄位設定為 cluster_type)。

    如果源數據的路徑是磁碟區路徑,您的叢集必須執行 Databricks Runtime 13.3 LTS 或更新版本。

重要

如果您有關於這些必要條件的問題,請連絡您的帳戶管理員。

步驟 1:建立叢集

若要建立叢集,請執行下列動作:

  1. 登入您的 Azure Databricks 工作區。
  2. 在側邊欄中,按一下 [新增>叢集]。
  3. 在叢集 UI 中,指定叢集的唯一名稱。
  4. 如果來源數據的路徑是磁碟區路徑,請選擇 Databricks Runtime 版本 13.2 或更高版本。
  5. 按兩下 [ 建立叢集]。

步驟 2:建立數據探索筆記本

本節說明如何建立數據探索筆記本,以便在建立數據管線之前先瞭解您的數據。

  1. 在提要欄中,按一下 +新增>筆記本。

    筆記本會自動附加至您使用的最後一個叢集(在本例中,您在 步驟 1:建立叢集 中建立的叢集)。

  2. 輸入筆記本的名稱。

  3. 按下語言按鈕,然後從下拉選單中選取 Python 或 SQL 。 預設會選擇 Python。

  4. 若要確認 ADLS 中源數據的數據存取,請將下列程式代碼貼到筆記本數據格中,按兩下 [ 執行功能表],然後按下 [ 執行單元格]。

    SQL

    LIST '<path-to-source-data>'
    

    Python

    %fs ls '<path-to-source-data>'
    

    將 <path-to-source-data> 替換為包含您資料的目錄路徑。

    這會顯示包含數據集之目錄的內容。

  5. 若要檢視記錄的範例,以進一步瞭解每個記錄的內容和格式,請將下列內容貼到筆記本數據格中,按兩下 執行功能表,然後按下 [ 執行單元格]。

    SQL

    SELECT * from read_files('<path-to-source-data>', format => '<file-format>') LIMIT 10
    

    Python

    spark.read.format('<file-format>').load('<path-to-source-data>').limit(10).display()
    

    取代下列值:

    • <file-format>:支援的檔案格式。 請參閱 DataFrameReader 選項。
    • <path to source data>:包含您資料的檔案在目錄中的路徑。

    這會顯示指定檔案的前十筆記錄。

步驟 3:內嵌原始數據

若要內嵌原始數據,請執行下列動作:

  1. 在側邊欄中,按一下「新增>筆記本」。

    筆記本會自動附加至您使用的最後一個叢集(在此案例中,您稍早在本文中建立的叢集)。

  2. 輸入筆記本的名稱。

  3. 按下語言按鈕,然後從下拉選單中選取 Python 或 SQL 。 預設會選擇 Python。

  4. 將下列程式代碼貼到筆記本資料格中:

    SQL

    CREATE OR REFRESH STREAMING TABLE
      <table-name>
    AS SELECT
      *
    FROM
      STREAM read_files(
        '<path-to-source-data>',
        format => '<file-format>'
      )
    

    Python

    @dp.table(table_properties={'quality': 'bronze'})
    def <table-name>():
      return (
         spark.readStream.format('cloudFiles')
         .option('cloudFiles.format', '<file-format>')
         .load(f'{<path-to-source-data>}')
     )
    

    取代下列值:

    • <table-name>:將包含匯入記錄之數據表的名稱。
    • <path-to-source-data>:源數據的路徑。
    • <file-format>:支援的檔案格式。 請參閱 DataFrameReader 選項。

注意

Lakeflow 管線並非設計來在筆記本單元中互動運行。 在筆記本中執行包含 Lakeflow pipelines 語法的儲存格,會回傳一個訊息,告知查詢是否語法有效,但不會執行查詢邏輯。 下列步驟說明如何從您剛才建立的匯入筆記本建立資料處理流程。

步驟 4:建立和發佈管線

若要建立管線並將其發佈至 Unity 目錄,請執行下列動作:

  1. 在您的工作區中,點擊[工作流程] 圖示,然後在側邊欄中選擇作業和管線。
  2. 在 新增 底下,按一下 ETL 流程。
  3. 輸入管線的名稱。
  4. 針對 管線模式,選擇 已觸發。
  5. 針對 [原始程式碼],選取包含管線原始程式碼的筆記本。
  6. 針對 目的地,選取 Unity 目錄。
  7. 若要確保您的資料表是由 Unity 目錄所管理,且任何具有父架構存取權的使用者都可以查詢它,請從下拉式清單中選取 目錄 和 目標架構 。
  8. 如果你沒有叢集建立權限,請從下拉選單中選擇支援 Lakeflow 管線的 叢集政策 。
  9. 將 進階的 信道 設定為 預覽。
  10. 接受所有其他預設值,然後按兩下 [ 建立]。

步驟 5:安排流程

若要排程管線,請執行下列動作:

  1. 在您的工作區中,點擊[工作流程] 圖示,然後在側邊欄中選擇作業和管線。
  2. 點擊您想要排程的管道名稱。
  3. 按一下排程>新增排程。
  4. 針對 [作業名稱],輸入作業的名稱。
  5. 將 [排程] 設定為 [已排程]。
  6. 指定期間、開始時間和時區。
  7. 設定一或多個電子郵件地址,以在管線啟動、成功或失敗時接收警示。
  8. 按一下 [建立]。

下一步