共用方式為


手動建立套件組合

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

需求

步驟 1:建立套件組合

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

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

提示

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

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

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

在此步驟中,您會將兩個筆記本新增至您的專案。 自2007年以來,這份報告從紐約州衛生部的公共數據源中獲得了自2007年起的list趨勢嬰兒名字列表。 請參閱該部門網站上的嬰兒姓名:依名稱趨勢:從 2007 年開始。 然後,第一個筆記本會將此資料儲存至名為 my-volume 的 Azure Databricks Unity Catalog 磁碟區中,位於名為 default 的 schema 中的 maincatalog。 第二個筆記本會查詢儲存的資料,並依名字和性別顯示 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:將套件組合組態 schema 檔案新增至專案

如果您使用支援 YAML 檔案和 JSON schema 檔案的 IDE,例如 Visual Studio Code、PyCharm Professional 或 IntelliJ IDEA Ultimate,您可以使用 IDE 來建立套件組合組態 schema 檔案,還可以檢查專案的套件組合組態檔語法和格式。 雖然您在步驟 5 稍後建立的套件組合組態檔是以 YAML 為基礎,但此步驟中的套件組合組態 schema 檔案是以 JSON 為基礎。

Visual Studio Code

  1. 將 YAML 語言伺服器支援新增至 Visual Studio Code,例如從 Visual Studio Code 市集安裝 YAML 延伸項目。

  2. Generate Databricks Asset Bundle 組態 JSON schema 檔案,方法是使用 Databricks CLI 執行 bundle schema 命令,並將輸出重新導向至 JSON 檔案。 例如,generate 目前目錄中名為 bundle_config_schema.json 的檔案,如下所示:

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

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

    注意

    在前面的批註中,如果您的 Databricks Asset Bundle 配置 JSON schema 檔案位於不同的路徑,請將 bundle_config_schema.json 替換為 schema 檔案的完整路徑。

PyCharm Professional

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

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

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

IntelliJ IDEA Ultimate

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

    databricks bundle schema > bundle_config_schema.json
    
  2. 遵循 設定自定義 JSON schema中的指示,先將 IntelliJ IDEA 設定為識別套件組合配置 JSON schema 檔案,然後完成 JSON schema 的對應。

  3. 在步驟 5 中,您將使用 IntelliJ IDEA 建立或開啟套件組合設定檔。 依照慣例,此檔案的名稱為 databricks.yml

步驟 4:Set 上行驗證

在此步驟中,您會 set 開發計算機上的 Databricks CLI 與 Azure Databricks 工作區之間的驗證。 本文假設您想要使用 OAuth 使用者對機器 (U2M) 驗證,以及名為 DEFAULT 的對應 Azure Databricks 組態設定檔進行驗證。

注意

U2M 驗證適用於即時試用這些步驟。 針對完全自動化的工作流程,Databricks 建議您改用 OAuth 機器對機器 (M2M) 驗證。 請參閱驗證中的 M2M 驗證設定指示。

  1. 針對每個目標工作區執行下列命令,使用 Databricks CLI 在本機起始 OAuth 權杖管理。

    在下列命令中,將 <workspace-url> 取代為您的 Azure Databricks 個別工作區網址,例如 https://adb-1234567890123456.7.azuredatabricks.net

    databricks auth login --host <workspace-url>
    
  2. Databricks CLI 會提示您儲存輸入為 Azure Databricks 組態設定檔的資訊。 按 Enter 以接受建議的設定檔名稱,或輸入新或現有設定檔的名稱。 任何具有相同名稱的現有設定檔,會以您輸入的資訊覆寫。 您可使用設定檔,在多個工作區之間快速切換驗證內容。

    若要 get 任何現有設定檔的 list,請在個別的終端機或命令提示字元中,使用 Databricks CLI 執行命令 databricks auth profiles。 若要檢視特定設定檔的現有設定,請執行 databricks auth env --profile <profile-name> 命令。

  3. 在網頁瀏覽器中,完成畫面上的指示,登入 Azure Databricks 工作區。

  4. 若要檢視設定檔目前的 OAuth 權杖值和權杖即將到期的時間戳記,請執行下列其中一個命令:

    • databricks auth token --host <workspace-url>
    • databricks auth token -p <profile-name>
    • databricks auth token --host <workspace-url> -p <profile-name>

    如果您有多個具有相同 --host 值的設定檔,您可能需要一起指定 --host-p 選項,以協助 Databricks CLI 尋找正確的相符 OAuth 權杖資訊。

步驟 5:將套件組合設定檔新增至專案

在此步驟中,您會定義如何部署和執行這兩個筆記本。 在此示範中,您想要使用 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>

針對自訂工作,工作宣告中的對應會對應至 REST API 參照中 POST /api/2.1/jobs/create 中所述的建立工作作業的要求酬載 (以 YAML 格式表示)。

提示

您可以使用覆寫 Databricks Asset Bundles 中的叢集設定中所述的技術來定義、合併和覆寫套件組合中新工作叢集的設定。

步驟 6:驗證專案的套件組合設定檔

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

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

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

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

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

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

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

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

  3. 按下 [使用者 ><your-username>> .bundle > 嬰兒姓名 > 開發 > 檔案] 資料夾。 這兩個筆記本應該位於此資料夾中。

  4. 檢查是否已建議工作:在 Azure Databricks 工作區的側邊欄中,按下 [工作流程]

  5. 在 [工作] 索引標籤上,按下 "retrieve-filter-baby-names-job"

  6. 按下 [任務] 索引標籤。應該有兩個任務:retrieve-baby-names-taskfilter-baby-names-task

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

步驟 8:執行部署的專案

在此步驟中,您會在工作區中執行 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,以檢查套件組合設定是否仍然有效,重新部署專案並執行重新部署的專案。

步驟 9:清理

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

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

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

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

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

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