使用 Databricks CLI 部署套件

已完成

當你的團隊設定好宣告式自動化套件後,部署到 Azure Databricks 就成為你的下一個責任。 Databricks CLI 提供從本地開發環境直接通往生產工作區的路徑。 您可以控制管線、作業和其他資源何時何地上線。 了解這個 部署工作流程 ,能讓你在不同環境間可靠地移動程式碼,同時維持一致性。

備註

本單元著重於基於 CLI 的部署,這是 CI/CD 自動化的推薦方法。 宣告式自動化套件也可透過 Azure Databricks 工作空間介面(公開預覽)管理,適合臨時協作,無需安裝 CLI。 請參閱在工作區中共同處理套件組合。

說明使用 Databricks CLI 部署套件時不同步驟的圖表。

驗證組合包配置

部署前,請確認你的套件配置在 語法上正確 且完整。 這個 bundle validate 指令會檢查你的設定檔,並回報任何可能阻礙成功部署的問題。

databricks bundle validate

當驗證成功時,你會看到你的組合身份的摘要:

Name: my_data_pipeline
Target: dev
Workspace:
  Host: https://adb-1234567890123456.7.azuredatabricks.net
  User: someone@example.com
  Path: /Users/someone@example.com/.bundle/my_data_pipeline/dev

Validation OK!

此輸出確認 套件名稱、 目標環境及 工作區細節。 如果你的設定包含錯誤,例如缺少必需欄位或屬性名稱無效,指令會輸出警告或錯誤,你需要先處理這些問題才能繼續。

小提示

在修改你的 bundle 設定檔後執行 bundle validate 。 及早發現語法錯誤比在部署時發現錯誤節省時間。

預覽部署變更

驗證後,你可以 預覽部署將創建、更新或移除的內容 ,而不必做實際變更。 命令 bundle plan 會建立你的 bundle 並顯示計劃中的操作。

databricks bundle plan

輸出顯示將受影響的資源:

Building python_artifact...
create jobs.data_ingestion_job
create pipelines.transform_pipeline

這個預覽讓你能驗證部署是否符合你的預期。 如果你發現意外變動,例如原本打算保留的資源被移除,請在承諾部署前調整你的設定。 對於非預設目標,請指定目標:

databricks bundle plan -t production

將 Bundle 部署到目標工作區

驗證完成並檢視計畫後,你使用指令 bundle deploy 部署套件。 這個指令 會上傳你的產物 ,並在目標工作區 建立或更新資源 。

databricks bundle deploy

預設情況下,部署會使用你套件設定中定義的 預設目標 。 若要部署至特定目標,如開發、預備或生產,請使用以下 -t 標記:

databricks bundle deploy -t dev

在部署過程中,CLI 會透過在工作區中儲存狀態來 追蹤所建立的資源 。 這種追蹤能實現以下幾種行為:

  • 在你的配置中定義的新資源已在工作區中建立
  • 你先前部署的現有資源會更新到符合你目前的配置
  • 已移除 且不再出現在配置中的資源會從工作區中刪除

這很重要

每個套件部署都有基於套件名稱、目標名稱及部署使用者身份的獨特身份。 如果多個團隊成員將同一個套件部署到同一目標,他們的部署就會發生衝突。 與團隊協調,確定誰會部署到共享環境。

在 CI/CD 管線 中進行自動部署時,加入 --auto-approve 標記以跳過確認提示:

databricks bundle deploy -t production --auto-approve

確認已部署的資源

部署完成後,確認你的資源在工作區中是否可用且配置正確。 此 bundle summary 指令會輸出有關 已部署資源 的資訊,包括在 Azure Databricks 介面中查看的直接 連結:

databricks bundle summary
Name: my_data_pipeline
Target: dev
Workspace:
  Host: https://adb-1234567890123456.7.azuredatabricks.net
  User: someone@example.com
  Path: /Users/someone@example.com/.bundle/my_data_pipeline/dev
Resources:
  Jobs:
    data_ingestion_job:
      Name: [dev someone] data_ingestion_job
      URL:  https://adb-1234567890123456.7.azuredatabricks.net/jobs/123456789?o=1234567890123456
  Pipelines:
    transform_pipeline:
      Name: [dev someone] transform_pipeline
      URL:  https://adb-1234567890123456.7.azuredatabricks.net/pipelines/abc-123-def?o=1234567890123456

你也可以使用 bundle open 指令直接前往特定資源。

databricks bundle open data_ingestion_job

此指令會在您的瀏覽器中開啟 Azure Databricks 工作空間中的該資源。

排除常見部署問題

即使準備周詳,部署有時仍會遇到問題。 以下是常見問題及解決方法:

認證錯誤:若發現權限被拒或驗證失敗,請確認你的 CLI 是否設定 了有效的憑證。 請檢查您的個人設定或重新登入您的工作區。

databricks auth login --host https://adb-1234567890123456.7.azuredatabricks.net

鎖定衝突:當部署進行中,Azure Databricks 會取得 鎖定 以防止同時進行修改。 如果先前的部署中斷,您可能會看到鎖定錯誤。 使用 --force-lock 旗標來覆寫。

databricks bundle deploy --force-lock

使用中執行衝突:如果您的套件中的作業或管線目前正在執行,則預設部署會失敗,以防止中斷。 您可以選擇使用 --fail-on-active-runs 旗標明確地失敗,或是在部署策略中處理正在執行的資源。

驗證警告:若 bundle validate 報告未知屬性警告,你的設定可能會引用目前 CLI 版本或工作區無法使用的功能。 更新你的 CLI,或是根據目前的結構檢視屬性名稱。

透過這些部署指令,您可以可靠地將資料工程工作從開發、預備階段到生產環境,掌控部署內容與部署時間。