Databricks 上的協調流程概觀
Azure Databricks 提供 協調 數據處理工作負載的內建體驗,讓您可以在較大的工作流程中協調及執行多個工作。 您可以簡化、優化及排程執行頻繁、可重複的工作,以便輕鬆管理複雜的工作流程。
本文介紹使用 Databricks 作業管理生產工作負載的相關概念和選擇。
什麼是工作?
在 Databricks 中,作業用來在 工作流程中排程並協調 Databricks 的任務。 常見的數據處理工作流程包括 ETL 工作流程、執行筆記本和機器學習服務 (ML) 工作流程,以及與 dbt 和 Azure Data Factory (ADF) 等外部系統整合。
作業由一或多個任務組成,並支援使用可視化撰寫 UI 的自訂控制流程邏輯,例如分支(if / else 語句)或循環處理(對每個語句)。 工作可以在 ETL 工作流程中載入或轉換數據,或在機器學習管線中以受控且可重複的方式建置、定型和部署 ML 模型。
範例:每日數據處理和驗證作業
下列範例顯示 Azure Databricks 中的作業。
此範例作業具有下列特性:
- 第一個任務會擷取營收數據。
- 第二個工作是檢查是否為空的 if / else 條件。
- 如果沒有,則會執行轉換工作。
- 否則,它會執行具有數據質量驗證的筆記本工作。
- 排定於每天上午 11:29 執行。
要快速了解如何建立自己的任務,請參閱 使用 Azure Databricks 作業建立第一個工作流程。
一般使用案例
從基礎數據工程原則到進階機器學習和無縫工具整合,這些常見使用案例展示了推動現代化分析、工作流程自動化和基礎結構延展性的功能廣度。
|
數據工程 | ETL(擷取、轉換、載入)管線:自動化從各種來源擷取數據、將數據轉換成適當的格式,並將其載入數據倉儲或數據湖。 請參閱 在 Azure Databricks 上執行您的第一個 ETL 工作負載
資料遷移:將數據從一個系統移至另一個系統。
連續數據處理:使用任務來處理連續數據處理工作,比如將來自 Kafka 等來源的數據流式傳輸並寫入 Delta 表。 | |數據科學和機器學習 | 模型定型:排程和執行機器學習模型定型作業,以確保模型已定型最新的數據。
批次推論:自動化批次推論作業流程,從已訓練的模型生成預測。
超參數微調:協調超參數微調作業以優化機器學習模型。 | |分析和報告 | 排程查詢:依排程在 作業 中執行 SQL 查詢,以產生報表或更新儀錶板。
數據匯總:執行一般數據匯總工作來準備數據以供分析。 | |自動化工作 | 多重工作工作流程:建立涉及多個工作的複雜工作流程,例如執行一系列筆記本、JAR 檔案、SQL 查詢或 Delta Live Tables 管線。
條件式邏輯:使用條件式邏輯,根據先前工作的成功或失敗,控制工作的流程。 | |與其他工具整合 | Airflow 和 Azure Data Factory (ADF):使用 Apache Airflow 和 Azure Data Factory等外部協調流程工具來觸發 Azure Databricks 作業,以允許更複雜的整合工作流程。
通知和監視:使用 Azure Databricks UI、CLI 或 API,或使用 Slack 和 Webhook 等工具的整合,設定通知和 監視作業執行 結果。 | |基礎結構即程序代碼 (IaC) | Databricks 資產套件組合:管理作業和其他資源作為程式代碼,以利於版本控制、程式代碼檢閱和 CI/CD(持續整合/持續部署)做法。 |
編排概念
在 Azure Databricks 中使用協調流程時,有三個主要概念:作業、工作和觸發程式。
工作 - 工作是協調、排程和執行操作的主要資源。 作業的複雜度可能會有所不同,可以從執行 Azure Databricks 筆記本的單一任務,直到處理具有條件邏輯和依賴關係的數百個任務。 作業中的工作會以視覺方式以有向無循環圖 (DAG) 表示。 您可以指定工作的屬性,包括:
- 觸發程式 - 這會定義執行作業的時機。
- 參數 - 自動推送至作業內工作的運行時間參數。
- 通知 - 當作業失敗或耗時過長時,要發送的電子郵件或網路鉤子。
- Git - 作業工作的原始檔控制設定。
任務 - 任務是工作中的特定單位。 每項工作都可以執行各種作業,包括:
- 某個筆記本任務會執行 Databricks 筆記本。 您可以指定筆記本的路徑,以及它所需的任何參數。
- 管道任務會執行管線。 您可以指定現有的 Delta Live Tables 管線,例如具現化檢視或串流表格。
- Python 腳本工作會執行 Python 檔案。 您可以提供檔案的路徑和任何必要參數。
有許多類型的工作。 如需完整清單,請參閱 的工作類型。 工作可以與其他工作有相依性,並有條件地執行其他工作,讓您能夠建立具有條件式邏輯和相依性的複雜工作流程。
觸發程式 - 觸發程式是根據特定條件或事件起始執行作業的機制。 觸發程式可以是時間型的,例如在排程時間執行作業(例如,上午 2 點前一天),或以事件為基礎,例如在新的數據抵達雲端記憶體時執行作業。
監視和可觀察性
作業具備監視和可觀察性的內建支援。 下列主題提供此支援的概觀。 如需監視作業和協調流程的詳細資訊,請參閱 Databricks 作業的監視和可檢視性。
UI 中的作業監視和可檢視性 - 在 Azure Databricks UI 中,您可以檢視作業,包括作業擁有者和上次執行結果等詳細數據,以及依作業屬性進行篩選。 您可以檢視作業執行的歷程記錄,並取得作業中每項工作的詳細資訊。
作業執行狀態和計量 - Databricks 報告作業執行成功,以及作業執行中每項工作的記錄和計量,以診斷問題並瞭解效能。
通知和警示 - 您可以透過電子郵件、Slack、自定義 Webhook 和其他選項設定作業事件的通知。
透過系統數據表 自定義查詢 - Azure Databricks 提供記錄作業執行和跨帳戶工作的系統數據表。 您可以使用這些資料表來查詢和分析作業效能和成本。 您可以建立儀錶板來可視化作業計量和趨勢,以協助監視工作流程的健康情況和效能。
限制
存在下列限制:
- 工作區受限於 2000 個並行作業執行。
429 Too Many Requests
回應會在您要求無法立即啟動的執行時傳回。 - 工作區在一小時內可以建立的作業數目限制為 10000 (包括「執行提交」)。 這項限制也會影響 REST API 和筆記本工作流程所建立的作業。
- 工作區最多可包含 12000 個儲存的作業。
- 作業最多可以包含 100 個工作。
我能否以程序設計方式管理工作流程?
Databricks 有工具和 API,讓您能以程序設計方式排程及協調工作流程,包括下列各項:
- Databricks CLI
- Databricks Asset Bundles
- 適用於 Visual Studio Code 的 Databricks 延伸模組
- Databricks SDK
- Jobs REST API
如需使用工具和 API 建立和管理作業的範例,請參閱 自動化作業建立和管理。 如需所有可用開發人員工具的文件,請參閱 本機開發工具。
外部工具會使用 Databricks 工具和 API,以程式設計方式排程工作流程。 您可以使用 Azure Data Factory 或 Apache AirFlow 等工具來排程作業。
使用 Apache AirFlow 的工作流程協調流程
您可以使用 Apache Airflow 來管理及排程資料工作流程。 使用 Airflow 時,您可在 Python 檔案中定義工作流程,而 Airflow 會管理排程和執行工作流程。 請參閱使用 Apache Airflow 協調 Azure Databricks 作業。
與 Azure Data Factory 的工作流程協調
Azure Data Factory (ADF) 是雲端資料整合服務,將資料儲存、移動及處理服務組合成自動化資料管線。 您可以使用 ADF 來協調 Azure Databricks 作業,作為 ADF 管線的一部分。
ADF 也有內建支援,可在 ADF 管線中執行 Databricks 筆記本、Python 指令碼或包裝在 JAR 中的程式碼。
若要了解如何在 ADF 管線中執行 Databricks 筆記本,請參閱在 Azure Data Factory 中使用 Databricks 筆記本活動執行 Databricks 筆記本,然後執行 Databricks 筆記本來轉換資料。
若要了解如何在 ADF 管線中執行 Python 指令碼,請參閱在 Azure Databricks 中執行 Python 活動來轉換資料。
若要了解如何在 ADF 管線中執行在 JAR 中封裝的程式碼,請參閱在 Azure Databricks 中執行 JAR 活動來轉換資料。