共用方式為


手動建立套件組合

在本教學課程中,您會從頭開始建立 Databricks Asset Bundle。 這個簡單的套件組合包含兩個筆記本,以及用來執行這些筆記本的 Azure Databricks 工作定義。 接著,您會在 Azure Databricks 工作區中驗證、部署和執行工作。 這些步驟將快速入門自動化,該快速入門的標題為 使用 Lakeflow Jobs 建立您的第一個工作流程

需求

  • Databricks CLI 0.218.0 版或更新版本。 若要檢查您已安裝的 Databricks CLI 版本,請執行命令 databricks -v。 若要安裝 Databricks CLI,請參閱 安裝或更新 Databricks CLI
  • 為 Databricks CLI 設定的驗證。 U2M 驗證適用於即時試用這些步驟。 請參閱 Databricks CLI 的驗證
  • 遠端 Databricks 工作區必須啟用資料夾功能。 請參閱 什麼是工作區檔案?

步驟 1:建立套件組合

套件組合包含您想要部署的工件,以及您想要執行的資源的設定。

  1. 在您的開發電腦上建立或識別空目錄。
  2. 切換至終端機中的空目錄,或在 IDE 中將其開啟。

提示

您也可以使用包含從 Git 提供者複製的存放庫的目錄。 這可讓您使用外部版本控制來管理套件組合,並更輕鬆地與專案的其他開發人員和 IT 專業人員共同作業。

如果您選擇複製此示範的存放庫,Databricks 建議該存放庫是空的,或只有基本檔案,例如 README.gitignore。 否則,存放庫中任何預先存在的檔案可能會不必要地同步處理至您的 Azure Databricks 工作區。

步驟 2:將筆記本新增至專案

在此步驟中,您會將兩個筆記本新增至您的專案。 自2007年以來,第一個筆記本會從紐約州衛生部的公共數據源中取得趨勢嬰兒名字的清單。 請參閱部門網站上的嬰兒姓名:按姓名的趨勢:自2007年起。 第一個筆記本接著會將此數據儲存至名為 my-volume 的 Azure Databricks Unity 目錄磁碟區,該磁碟區位於名為 default的目錄中名為 main 的架構中。 第二個筆記本會查詢儲存的資料,並依名字和性別顯示 2014 年嬰兒姓名的彙總計數。

  1. 從目錄的根目錄中,建立第一個筆記本,名為 的檔案 retrieve-baby-names.py

  2. 將下列程式碼新增至 retrieve-baby-names.py 檔案:

    # Databricks notebook source
    import requests
    
    response = requests.get('http://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv')
    csvfile = response.content.decode('utf-8')
    dbutils.fs.put("/Volumes/main/default/my-volume/babynames.csv", csvfile, True)
    
  3. 在同一個目錄中,建立第二個筆記本,即名為 filter-baby-names.py 的檔案。

  4. 將下列程式碼新增至 filter-baby-names.py 檔案:

    # Databricks notebook source
    babynames = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/Volumes/main/default/my-volume/babynames.csv")
    babynames.createOrReplaceTempView("babynames_table")
    years = spark.sql("select distinct(Year) from babynames_table").toPandas()['Year'].tolist()
    years.sort()
    dbutils.widgets.dropdown("year", "2014", [str(x) for x in years])
    display(babynames.filter(babynames.Year == dbutils.widgets.get("year")))
    

步驟 3:將套件組合組態架構檔新增至專案

如果您使用支援 YAML 檔案和 JSON 架構檔案的 IDE,例如 Visual Studio Code、PyCharm Professional 或 IntelliJ IDEA Ultimate,您可以使用 IDE 不僅建立套件組合組態架構檔案,還能檢查專案的套件組合組態檔的語法和格式。

Visual Studio Code

  1. 將 YAML 語言伺服器支援新增至 Visual Studio Code,例如從 Visual Studio Code Marketplace 安裝 YAML 擴充功能。

  2. 使用 Databricks CLI 執行 bundle schema 命令,並將輸出重新導向至 JSON 檔案,以產生 Databricks 資產組合組態 JSON 架構檔案。 例如,在目前目錄中產生名為 bundle_config_schema.json 的檔案,如下所示:

    databricks bundle schema > bundle_config_schema.json
    
  3. 在步驟 4 中,您會將下列批注新增至套件組合組態檔的開頭,以將套件組合組態檔與指定的 JSON 架構檔案產生關聯:

    # yaml-language-server: $schema=bundle_config_schema.json
    

    備註

    在上述註釋中,如果您的 Databricks Asset Bundle 配置 JSON 架構檔案位於不同的路徑,請將 bundle_config_schema.json 替換為您架構檔案的完整路徑。

PyCharm 專業版

  1. 使用 Databricks CLI 產生 Databricks Asset Bundle 組態 JSON 架構檔案,以執行 bundle schema 命令,並將輸出重新導向至 JSON 檔案。 例如,在目前目錄中產生名為 bundle_config_schema.json 的檔案,如下所示:

    databricks bundle schema > bundle_config_schema.json
    
  2. 依照配置自定義 JSON 模式中的指示,配置 PyCharm 以識別套件組態 JSON 模式檔案,然後完成 JSON 模式對應。

  3. 在步驟 4 中,您將使用 PyCharm 來建立或開啟套件組合組態檔。 依照慣例,此檔案的名稱為 databricks.yml

IntelliJ IDEA 旗艦版

  1. 使用 Databricks CLI 執行 bundle schema 命令,並將輸出重新導向至 JSON 檔案,以產生 Databricks 資產組合組態 JSON 架構檔案。 例如,在目前目錄中產生名為 bundle_config_schema.json 的檔案,如下所示:

    databricks bundle schema > bundle_config_schema.json
    
  2. 依照設定自定義 JSON 架構中的指示,設定 IntelliJ IDEA 來辨識套件組合組態的 JSON 架構檔案,然後完成 JSON 架構的對應。

  3. 在步驟 4 中,您將使用 IntelliJ IDEA 來建立或開啟捆綁配置檔。 依照慣例,此檔案的名稱為 databricks.yml

步驟 4:將套件組合組態檔新增至專案

在此步驟中,您會定義如何部署和執行這兩個筆記本。 在此示範中,您想要使用 Azure Databricks 工作來執行第一個筆記本,然後執行第二個筆記本。 因為第一個筆記本會儲存資料,而第二個筆記本會查詢儲存的資料,因此您希望能在第二個筆記本開始之前完成第一個筆記本的執行。 您會在專案的套件組合設定檔中建立這些目標模型。

  1. 從目錄的根目錄中,建立套件組合組態檔,名為的檔案 databricks.yml
  2. 將下列程式代碼新增至 databricks.yml 檔案,並將 <workspace-url> 取代為您的 個別工作區 URL, 例如 https://adb-1234567890123456.7.azuredatabricks.net。 此 URL 必須符合 .databrickscfg 檔案中的 URL:

提示

# yaml-language-server 開頭的第一行只有在 IDE 支援時才需要。 如需詳細資料,請參閱先前的步驟 3。

# yaml-language-server: $schema=bundle_config_schema.json
bundle:
  name: baby-names

resources:
  jobs:
    retrieve-filter-baby-names-job:
      name: retrieve-filter-baby-names-job
      job_clusters:
        - job_cluster_key: common-cluster
          new_cluster:
            spark_version: 12.2.x-scala2.12
            node_type_id: Standard_DS3_v2
            num_workers: 1
      tasks:
        - task_key: retrieve-baby-names-task
          job_cluster_key: common-cluster
          notebook_task:
            notebook_path: ./retrieve-baby-names.py
        - task_key: filter-baby-names-task
          depends_on:
            - task_key: retrieve-baby-names-task
          job_cluster_key: common-cluster
          notebook_task:
            notebook_path: ./filter-baby-names.py

targets:
  development:
    workspace:
      host: <workspace-url>

針對自定義作業,作業宣告中的對應與建立作業操作的請求負載相對應,該負載以 YAML 格式表示,詳見 REST API 參考文件中的 POST /api/2.1/jobs/create

提示

您可以使用 覆蓋目標設定 中所述的技術,定義、組合及覆蓋套件中新工作叢集的設定。

步驟 5:驗證專案的套件組合組態檔

在此步驟中,您會檢查套件組合設定是否有效。

  1. 使用 Databricks CLI 執行 bundle validate 命令,如下所示:

    databricks bundle validate
    
  2. 如果傳回套件組合設定的摘要,則驗證成功。 如果傳回任何錯誤,請修正錯誤,然後重複此步驟。

如果您在此步驟後對套件組合進行任何變更,您應該重複此步驟,以檢查套件組合設定是否仍然有效。

步驟 6:將本機專案部署至遠端工作區

在此步驟中,您會將兩個本機筆記本部署至遠端 Azure Databricks 工作區,並在工作區中建立 Azure Databricks 工作。

  1. 使用 Databricks CLI 執行 bundle deploy 命令,如下所示:

    databricks bundle deploy -t development
    
  2. 檢查是否已部署這兩個本機筆記本:在 Azure Databricks 工作區的側邊欄中,單擊 [工作區]。

  3. 點擊進入 Users ><your-username>> .bundle > baby-names > development > files 資料夾。 這兩個筆記本應該位於此資料夾中。

  4. 檢查作業是否已建立:在 Azure Databricks 工作區的側邊欄中,按一下 作業和管線

  5. 或者,選取 [作業] 和 [我所擁有的] 篩選器。

  6. 點擊 retrieve-filter-baby-names-job

  7. 點擊「任務」 標籤。應該有兩個任務:retrieve-baby-names-taskfilter-baby-names-task

如果您在此步驟後對套件組合進行任何變更,您應該重複步驟 6-7,以檢查套件組合設定是否仍然有效,然後重新部署專案。

步驟 7:執行已部署的專案

在此步驟中,您會在工作區中執行 Azure Databricks 工作。

  1. 使用 Databricks CLI 執行 bundle run 命令,如下所示:

    databricks bundle run -t development retrieve-filter-baby-names-job
    
  2. 複製終端機中顯示的 Run URL 的值,並將此值貼到您的網頁瀏覽器中,以開啟您的 Azure Databricks 工作區。

  3. 在 Azure Databricks 工作區中,在兩個任務順利完成並顯示綠色標題列後,按下 "filter-baby-names-task" 任務以查看查詢結果。

如果您在此步驟後對套件組合進行任何變更,您應該重複步驟 6-8,以檢查套件組合設定是否仍然有效,重新部署專案並執行重新部署的專案。

步驟 8:清除

在此步驟中,您會從工作區中刪除兩個已部署的筆記本和作業。

  1. 使用 Databricks CLI 執行 bundle destroy 命令,如下所示:

    databricks bundle destroy
    
  2. 確認工作刪除請求:系統提示永久刪除資源時,請輸入 y 並按 Enter

  3. 確認筆記本刪除要求:提示您永久終結先前部署的資料夾及其所有檔案時,請輸入 y 並按 Enter

執行 bundle destroy 命令僅會刪除已部署的工作和包含兩個已部署筆記本的資料夾。 此命令不會刪除任何副作用,例如第一個筆記本建立的 babynames.csv 檔案。 若要刪除 babybnames.csv 檔案,請執行下列動作:

  1. 在 Azure Databricks 工作區的側邊欄中,按一下 [目錄]
  2. 按下 [瀏覽 DBFS]
  3. 按下 "FileStore" 資料夾。
  4. 按下 "babynames.csv"旁邊的下拉箭頭,然後按下 [刪除]
  5. 如果您也想要從開發電腦刪除套件組合,您現在可以刪除步驟 1 中建立的本機目錄。