排程及協調工作流程

Databricks 工作流程提供工具集合,可讓您排程及協調 Azure Databricks 上的資料處理工作。 您使用 Databricks 工作流程來設定 Databricks 作業。

本文介紹了使用 Databricks 作業管理生產工作負載的相關概念。

注意

差異即時資料表提供宣告式語法來建立資料處理管線。 請參閱什麼是差異即時資料表?

什麼是 Databricks 作業?

Databricks 作業可以讓您設定工作,以依指定的排程在指定的計算環境中執行。 除了差異即時資料表管線之外,作業是 Azure Databricks 上用來將資料處理和 ML 邏輯部署到生產環境的主要工具。

作業的複雜性各不相同,從執行 Databricks 筆記本的單一工作,到執行條件式邏輯和相依性的數千個工作。

如何設定和執行作業?

您可使用作業 UI、Databricks CLI,或叫用作業 API 來建立和執行作業。 您可使用 UI 或 API 修復並重新執行失敗或取消的作業。 您可以使用 UI、CLI、API 和通知來監視作業執行結果 (例如,電子郵件、Webhook目的地或 Slack 通知)。

若要了解如何使用 Databricks CLI,請參閱什麼是 Databricks CLI?。 若要了解如何使用工作 API,請參閱工作 API

作業所需的最低組態為何?

Azure Databricks 上的全部作業都需要下列各項:

  • 原始程式碼,包含了要執行的邏輯。
  • 執行邏輯的計算資源。 計算資源可以是無伺服器計算、傳統作業計算,或通用計算。 請參閱搭配您的工作使用 Azure Databricks 計算
  • 應執行作業或手動觸發程序的指定排程。
  • 唯一名稱。

注意

如果您在 Databricks 筆記本中開發程式碼,可以使用 [排程] 按鈕,將該筆記本設定為作業。 請參閱建立及管理排程作業

什麼是工作?

工作代表作業中的邏輯單位。 工作的複雜程度不一,包括下列各項:

  • 筆記本
  • JAR
  • SQL 查詢
  • DLT 管線
  • 另一個工作
  • 控制流程工作

您可以藉由指定工作之間的相依性來控制工作的執行順序。 您可以設定工作,依順序或平行執行。

作業會與工作的狀態資訊和中繼資料互動,但工作範圍是孤立的。 您可使用工作值來共用排程工作之間的內容。 請參閱在 Azure Databricks 作業中共用工作之間的資訊

哪些控制項流程選項可供作業使用?

當您在作業內設定作業和工作時,可以自訂設定,以控制整個作業和個別工作的執行方式。

觸發程序類型

設定作業時,必須指定觸發程式類型。 您可以選擇下列觸發程序類型:

您也可以選擇手動觸發作業,但這主要是保留給特定的使用案例,例如:

  • 您可以使用外部協調流程工具,使用 REST API 呼叫來觸發作業。
  • 您有一個很少執行的工作,需要真人在迴圈中進行驗證或解決資料品質問題。
  • 您正執行只需要執行一次或幾次的工作負載,例如移轉。

請參閱新檔案抵達時觸發工作

重試

重試會指定當作業失敗並出現錯誤訊息時,應重新執行特定作業或工作的次數。 錯誤通常是暫時性的,並透過重新啟動來解決,而 Azure Databricks 上的某些功能,例如使用結構化串流進行結構描述演進,假設您使用重試來執行作業,以重設環境,並允許工作流程繼續進行。

設定重試的選項會出現在 UI 中,以取得支援的內容。 其中包括下列各項:

  • 您可以指定整個作業的重試次數,這意味著如果有任何工作失敗,整個作業就會重新啟動。
  • 您可以指定工作的重試次數,在此情況下,如果遇到錯誤,工作最多會重新啟動指定的次數。

在連續觸發程序模式中執行時,Databricks 會自動使用指數輪詢重試。 請參閱如何處理連續作業的失敗?

執行 if 條件式工作

您可以使用 [執行 if] 工作類型,以根據其他工作的結果來指定後續工作的條件。 您將工作新增至作業,並指定上游相依性工作。 根據這些工作的狀態,可以設定要執行的一或多個下游工作。 作業支援下列相依性:

  • 全部皆已成功
  • 至少有一項成功
  • 無失敗
  • 已全部完成
  • 至少一項失敗
  • 全部失敗

請參閱在 Azure Databricks 工作有條件執行任務

If/else 條件式工作

您可使用 If/else 工作類型,根據某些值來指定條件式。 請參閱在具有 If/else 條件工作的作業中新增分支邏輯

作業支援 taskValues 您在邏輯內定義,並讓您可將某些計算或狀態的結果從工作傳回作業環境。 您可針對 taskValues、作業參數或動態值定義 If/else 條件。

Azure Databricks 支援下列條件式的運算元:

  • ==
  • !=
  • >
  • >=
  • <
  • <=

另請參閱:

針對每個任務

使用 For each 任務在迴圈中執行另一個任務,將一組不同的參數傳遞至任務的每個反覆項目。

For each 工作新增至作業需要定義兩個工作:For each 工作和巢狀工作。 巢狀工作是針對 For each 工作的每個反覆項目執行的工作,而且是其中一個標準 Azure Databricks 作業工作類型。 支援透過多個方法將參數傳遞至巢狀工作。

請參閱在迴圈中執行參數化 Azure Databricks 工作任務

工期閾值

如果超過指定的工期,可以指定傳送警告或停止工作或作業的持續時間閾值。 您可能要設定此設定的範例包括下列項目:

  • 您有容易陷入無回應狀態的工作。
  • 如果超過工作流程的 SLA,您需要警告工程師。
  • 您想要讓設定為大型叢集的作業失敗,以避免預期之外的成本。

並行

大部分作業都使用預設並行為 1 個並行作業來設定。 這意味著,如果先前的作業執行未在應觸發新作業時完成,則會略過下一個作業執行。

增加並行存取有一些使用案例,但大部分工作負載都不需要改變此設定。

如需設定並行存取的詳細資訊,請參閱設定並行執行上限

如何監視作業?

您會在作業或工作啟動、完成或失敗時收到通知。 您可將通知傳送至一或多個電子郵件地址或系統目的地。 請參閱新增工作事件的電子郵件和系統通知

系統資料表包含 lakeflow 結構描述,您可以在其中檢視帳戶中與作業活動相關的記錄。 請參閱工作系統資料表參考

您也可以將作業系統資料表與計費資料表聯結,以監視帳戶中作業的成本。 請參閱使用系統資料表監視作業成本

限制

存在下列限制:

  • 工作區受限於 1000 個並行作業執行。 429 Too Many Requests 回應會在您要求無法立即啟動的執行時傳回。
  • 工作區在一小時內可以建立的作業數目限制為 10000 (包括「執行提交」)。 這項限制也會影響 REST API 和筆記本工作流程所建立的作業。
  • 工作區最多可包含 12000 個儲存的作業。
  • 作業最多可以包含 100 個工作。

我能否以程序設計方式管理工作流程?

Databricks 提供工具和 API,讓您能以程序設計方式排程及協調工作流程,包括下列各項:

如需有關開發人員工具的詳細資訊,請參閱開發人員工具和指導

使用 Apache AirFlow 的工作流程協調流程

您可以使用 Apache Airflow 來管理及排程資料工作流程。 使用 Airflow 時,您可在 Python 檔案中定義工作流程,而 Airflow 會管理排程和執行工作流程。 請參閱使用 Apache Airflow 協調 Azure Databricks 作業

與 Azure Data Factory 的工作流程協調

Azure Data Factory (ADF) 是雲端資料整合服務,將資料儲存、移動及處理服務組合成自動化資料管線。 您可以使用 ADF 來協調 Azure Databricks 作業,作為 ADF 管線的一部分。

若要了解如何使用 ADF 網路活動執行作業,包括如何從 ADF 向 Azure Databricks 進行驗證,請參閱從 Azure Data Factory 利用 Azure Databricks 作業協調流程

ADF 還提供內建支援,可在 ADF 管線中執行 Databricks 筆記本、Python 指令碼或包裝在 JAR 中的程式碼。

若要了解如何在 ADF 管線中執行 Databricks 筆記本,請參閱在 Azure Data Factory 中使用 Databricks 筆記本活動執行 Databricks 筆記本,然後執行 Databricks 筆記本來轉換資料

若要了解如何在 ADF 管線中執行 Python 指令碼,請參閱在 Azure Databricks 中執行 Python 活動來轉換資料。

若要了解如何在 ADF 管線中執行在 JAR 中封裝的程式碼,請參閱在 Azure Databricks 中執行 JAR 活動來轉換資料