開發及測試 Delta Live Tables 管線的秘訣、建議和功能
本文說明可用來開發和測試 Delta Live Tables 管線的模式。 透過管線設定,Delta Live Tables 可讓您指定設定,以隔離開發、測試和生產環境中的管線。 本文的建議適用於 SQL 和 Python 程式代碼開發。
Databricks 建議使用參數來撰寫可延伸的 Delta Live Tables 程式代碼。 這特別適用於在開發、測試和生產環境之間撰寫可攜式程序代碼。 例如,您可以將管線指向測試數據,並有已知問題來測試程式代碼復原。 請參閱 使用參數控制數據源。
使用開發模式執行管線更新
Delta Live Tables 有 UI 切換,可控制管線更新是在開發或生產模式中執行。 此模式會控制管線更新的處理方式,包括:
- 開發模式不會在更新成功或失敗之後立即終止計算資源。 您可以重複使用相同的計算資源來執行多個管線更新,而不需要等待叢集啟動。
- 開發模式不會在工作失敗時自動重試,可讓您立即偵測並修正管線中的邏輯或語法錯誤。
Databricks 建議在開發和測試期間使用開發模式。 不過,部署至生產環境時,一律切換至生產模式。
請參閱開發和生產模式。
測試管線原始程式碼,而不需要等候數據表更新
若要檢查管線原始程式碼的問題,例如語法和分析錯誤,請在開發和測試期間執行 驗證更新。 Validate
因為更新只會驗證管線原始碼的正確性,而不會在任何數據表上執行實際的更新,因此在執行實際的管線更新之前,您可以更快速地識別並修正問題。
在所有開發生命週期階段指定目標架構
Delta Live Tables 管線中的所有數據集都會參考 LIVE
在管線外部無法存取的虛擬架構。 如果指定了目標架構, LIVE
虛擬架構會指向目標架構。 您必須指定目標架構,才能在更新期間檢閱每個數據表所寫的結果。
您必須指定環境唯一的目標架構。 指定架構中的每個數據表只能由單一管線更新。
您可以建立不同的管線來開發、測試和生產環境,並使用不同的目標來隔離這些環境。 使用目標架構參數可讓您移除使用字串插補或其他小工具或參數來控制數據源和目標的邏輯。
請參閱 搭配您的 Delta Live Tables 管線 使用 Unity 目錄和 搭配舊版 Hive 中繼存放區使用 Delta Live Tables 管線。
使用 Databricks Git 資料夾來管理 Delta Live Tables 管線
Databricks 建議在 Delta Live Tables 管線開發、測試和部署至生產環境期間使用 Git 資料夾。 Git 資料夾會啟用下列專案:
- 追蹤程式代碼隨著時間變化的方式。
- 合併多個開發人員所做的變更。
- 軟體開發實務,例如程式代碼檢閱。
Databricks 建議為與管線相關的所有程式代碼設定單一 Git 存放庫。
每個開發人員都應該有自己的 Databricks Git 資料夾設定以供開發。 在開發期間,使用者會從其 Databricks Git 資料夾設定自己的管線,並使用開發數據集和隔離的架構和位置來測試新的邏輯。 完成開發工作之後,使用者會在中央 Git 存放庫中認可變更並推送回其分支,並針對測試或 QA 分支開啟提取要求。
產生的分支應該簽出在 Databricks Git 資料夾中,而且應該使用測試數據集和開發架構來設定管線。 假設邏輯如預期般執行,提取要求或發行分支應該準備好將變更推送至生產環境。
雖然 Git 資料夾可用來跨環境同步程式代碼,但管線設定必須手動保持最新狀態,或使用 Terraform 之類的工具。
此工作流程類似於在所有 Databricks 作業中使用適用於 CI/CD 的 Git 資料夾。 請參閱使用 Git 和 Databricks Git 資料夾的 CI/CD 技術(Repos)。
擷取和轉換步驟的區段原始程式碼
Databricks 建議隔離查詢,從擴充和驗證數據的轉換邏輯擷取數據。 如果您組織原始程式碼以從開發或測試目錄中的數據源,與生產數據擷取邏輯分開,您可以針對具有這些環境專屬數據集的各種環境設定管線。 例如,您可以使用較小的數據集進行測試來加速開發。 請參閱 建立用於開發和測試的範例數據集。
您也可以使用參數來控制用於開發、測試和生產環境的數據源。 請參閱 搭配 Delta Live Tables 管線使用參數。
由於 Delta Live Tables 管線會使用 LIVE
虛擬架構來管理所有數據集關聯性,藉由設定開發及測試管線搭配擷取原始程式碼來載入範例數據,因此您可以使用生產數據表名稱來取代範例數據集來測試程式代碼。 所有環境中都可以使用相同的轉換邏輯。
建立用於開發和測試的範例數據集
Databricks 建議建立開發和測試數據集,以測試具有預期數據和可能格式不正確或損毀記錄的管線邏輯。 有多種方式可建立可用於開發和測試的數據集,包括下列各項:
- 從生產數據集選取數據子集。
- 針對包含 PII 的來源,使用匿名或人為產生的數據。
- 根據下游轉換邏輯,建立具有定義良好結果的測試數據。
- 藉由建立中斷數據架構期望的記錄,預測潛在的數據損毀、格式不正確的記錄和上游數據變更。
例如,如果您有使用下列程式代碼定義資料集的筆記本:
CREATE OR REFRESH STREAMING TABLE input_data AS SELECT * FROM read_files("/production/data", "json")
您可以使用查詢來建立包含特定記錄的範例資料集,如下所示:
CREATE OR REFRESH MATERIALIZED VIEW input_data AS
SELECT "2021/09/04" AS date, 22.4 as sensor_reading UNION ALL
SELECT "2021/09/05" AS date, 21.5 as sensor_reading
下列範例示範篩選已發佈的數據,以建立用於開發或測試的生產數據子集:
CREATE OR REFRESH MATERIALIZED VIEW input_data AS SELECT * FROM prod.input_data WHERE date > current_date() - INTERVAL 1 DAY
若要使用這些不同的數據集,請使用實作轉換邏輯的筆記本建立多個管線。 每個管線都可以從 LIVE.input_data
數據集讀取數據,但設定為包含建立環境特定數據集的筆記本。