分享方式:


從 Azure Data Lake Storage Gen2 上線數據

本文說明如何從 Azure Data Lake Storage Gen2 將數據上線至新的 Azure Databricks 工作區。 您將瞭解如何安全地存取與 Unity 目錄磁碟區(建議)或 Unity 目錄外部位置對應的雲端物件儲存位置中的源數據。 然後,您將瞭解如何使用具有差異實時數據表的自動載入器,以累加方式將數據內嵌至 Unity 目錄受控數據表。

注意

若要在 Databricks SQL 中將數據上線,而不是在筆記本中上線,請參閱 使用 Databricks SQL 中的串流數據表載入數據。

開始之前

如果您不是系統管理員,本文假設系統管理員已提供下列專案:

  • 已啟用 Unity 目錄的 Azure Databricks 工作區存取權。 如需詳細資訊,請參閱 設定和管理 Unity 目錄

  • READ FILES Unity 目錄外部磁碟區或 Unity 目錄外部位置上的許可權,該位置會對應至包含源數據的雲端儲存位置。 如需詳細資訊,請參閱 建立外部位置以將雲端記憶體連線到 Azure Databricks

  • 源數據的路徑。

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

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

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

  • 叢集建立許可權或存取定義 Delta Live Tables 管線叢集的叢集原則 (cluster_type字段設定為 dlt)。

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

重要

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

步驟 1:建立叢集

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

  1. 登入您的 Azure Databricks 工作區。
  2. 在提要欄位中,按兩下 [新增>叢集]。
  3. 在叢集 UI 中,指定叢集的唯一名稱。
  4. 如果源數據的路徑是磁碟區路徑,則針對 Databricks Runtime 運行時間版本,選取 [13.2] 或更新版本
  5. 按兩下 [ 建立叢集]。

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

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

  1. 在提要欄位中,按兩下 [+新增>筆記本]。

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

  2. 輸入筆記本的名稱。

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

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

    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>:支援的檔案格式。 請參閱 檔案格式選項
    • <path to source data>:目錄中包含資料之檔案的路徑。

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

步驟 3:內嵌原始數據

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

  1. 在提要欄位中,按兩下 [新增>筆記本]。

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

  2. 輸入筆記本的名稱。

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

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

    SQL

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

    Python

    @dlt.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>:支援的檔案格式。 請參閱 檔案格式選項

注意

Delta Live Tables 並非設計為在筆記本數據格中以互動方式執行。 在筆記本中執行包含 Delta Live Tables 語法的儲存格,會傳回有關查詢語法是否有效,但不會執行查詢邏輯的訊息。 下列步驟說明如何從您剛才建立的擷取筆記本建立管線。

步驟 4:建立和發佈管線

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

  1. 在提要欄位中,按兩下 [工作流程],按兩下 [差異實時數據表] 索引卷 標,然後按兩下 [ 建立管線]。
  2. 輸入管線的名稱。
  3. 針對 [管線模式],選取 [ 已觸發]。
  4. 針對 [原始程式碼],選取包含管線原始程式碼的筆記本。
  5. 針對 [ 目的地],選取 [Unity 目錄]。
  6. 若要確保您的資料表是由 Unity 目錄所管理,且任何具有父架構存取權的使用者都可以查詢它,請從下拉式清單中選取 目錄目標架構
  7. 如果您沒有叢集建立許可權,請從下拉式清單中選取 支援 Delta Live Tables 的叢集 原則。
  8. 針對 [進階],將 [信道] 設定為 [預覽]。
  9. 接受所有其他預設值,然後按兩下 [ 建立]。

步驟 5:排程管線

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

  1. 在提要欄位中,按兩下 [ Delta Live Tables]。
  2. 按兩下您想要排程的管線名稱。
  3. 按兩下 [排程>] [新增排程]。
  4. 針對 [作業名稱],輸入作業的名稱。
  5. 將 [ 排程] 設定為 [已排程]。
  6. 指定期間、開始時間和時區。
  7. 設定一或多個電子郵件位址,以在管線啟動、成功或失敗時接收警示。
  8. 按一下 [建立]。

下一步