Databricks Asset Bundles 部署模式
本文說明 Databricks 資產組合部署模式的語法。 套件組合可讓您以程式設計方式管理 Azure Databricks 工作流程。 請參閱什麼是 Databricks Asset Bundles?
在 CI/CD 工作流程中,開發人員通常會以各種階段或 模式撰寫程式代碼、測試、部署及執行解決方案。 例如,最簡單的模式集包含 生產前驗證的開發 模式,後面接著 已驗證交付專案的生產 模式。 Databricks 資產套件組合會提供預設行為的選擇性集合,這些行為會對應至每個模式。 若要針對特定目標使用這些行為,請在組態對應中targets
設定mode
或presets
設定目標。 如需 的相關信息 targets
,請參閱 配套組態目標對應。
開發模式
若要在開發模式中部署套件組合,您必須先將 mode
對應設定為 ,設定 development
為 預定的目標。 例如,這個名為 dev
的目標會被視為開發目標:
targets:
dev:
mode: development
藉由執行 databricks bundle deploy -t <target-name>
命令以開發模式部署目標,會實作下列行為,其可使用預設值來自定義:
- 在未部署為檔案或筆記本的所有資源前面加上前置詞
[dev ${workspace.current_user.short_name}]
和標記,每個已部署的作業和管線都有dev
Azure Databricks 標籤。 - 將所有相關已部署的 Delta Live Tables 管線標示為
development: true
。 請參閱 使用開發模式執行管線更新。 --compute-id <cluster-id>
可讓您在命令的相關呼叫bundle deploy
中使用 ,這會覆寫相關套件組合組態檔中已指定的任何和所有現有叢集定義。 您可以在這裡將對應設定為對應,而不是在--compute-id <cluster-id>
命令的相關呼叫bundle deploy
中使用,或將對應設定compute_id
為對應子系對應bundle
至要使用的叢集標識符。- 暫停已部署資源的所有排程和觸發程式,例如作業或品質監視器。 將 設定
schedule.pause_status
為UNPAUSED
,取消個別作業的排程和觸發程式。 - 在所有已部署的作業上啟用並行執行,以加快反覆專案的速度。 將 設定
max_concurrent_runs
為1
,以停用個別作業的並行執行。 - 停用部署鎖定以加快反覆運算速度。 此鎖定可防止部署衝突不太可能在開發模式中發生。 將設定
bundle.deployment.lock.enabled
為true
以重新啟用鎖定。
生產模式
若要在生產模式中部署套件組合,您必須先將 mode
對應設定為 production
,設定為 預定的目標。 例如,這個名為 prod
的目標會被視為生產目標:
targets:
prod:
mode: production
執行 databricks bundle deploy -t <target-name>
命令以生產模式部署目標會實作下列行為:
驗證所有相關已部署的 Delta Live Tables 管線是否標示為
development: false
。驗證目前的 Git 分支是否等於目標中指定的 Git 分支。 在目標中指定 Git 分支是選擇性的,而且可以使用其他
git
屬性來完成,如下所示:git: branch: main
藉由在部署時指定
--force
,即可覆寫此驗證。Databricks 建議您使用服務主體進行生產部署。 您可以將 設定
run_as
為服務主體,以強制執行此動作。 請參閱 管理服務主體 和 指定 Databricks 資產套件組合工作流程的執行身分識別。 如果您不使用服務主體,請記下下列其他行為:- 驗證
artifact_path
、file_path
、root_path
或state_path
對應未覆寫給特定使用者。 - 驗證 已
run_as
指定 和permissions
對應,以釐清哪些身分識別具有部署的特定許可權。
- 驗證
不同於上述將對應設定為
development
的行為,將對應production
設定mode
mode
為 不允許覆寫相關套件組合組態檔中指定的任何現有叢集定義,例如,使用--compute-id <cluster-id>
選項或compute_id
對應。
自訂預設
Databricks 資產組合支援可設定的目標預設值,可讓您自定義目標的行為。 下表列出可用的預設值:
預先設定 | 描述 |
---|---|
name_prefix |
要前面加上資源名稱的前置詞字串。 |
pipelines_development |
管線是否處於開發模式。 有效值為 true 或 false 。 |
trigger_pause_status |
要套用至所有觸發程式和排程的暫停狀態。 有效值為 PAUSED 或 UNPAUSED 。 |
jobs_max_concurrent_runs |
作業允許的並行執行數目上限。 |
tags |
一組 key:value 標記,適用於支持標籤的所有資源,其中包括作業和實驗。 Databricks 資產套件組合不支持資源的標籤 schema 。 |
注意
如果 和 presets
都mode
已設定,預設會覆寫預設模式行為,而個別資源的設定會覆寫預設值。 例如,如果排程設定為 UNPAUSED
,但 trigger_pause_status
預設設定 PAUSED
為 ,則會取消排程。
下列範例顯示名為 dev
之目標的自訂預設組態:
targets:
dev:
presets:
name_prefix: "testing_" # prefix all resource names with testing_
pipelines_development: true # set development to true for pipelines
trigger_pause_status: PAUSED # set pause_status to PAUSED for all triggers and schedules
jobs_max_concurrent_runs: 10 # set max_concurrent runs to 10 for all jobs
tags:
department: finance