如何開發和測試三角洲住表管道嗎
本文描述的模式可以用來開發和測試管道三角洲住表。通過管道設置,三角洲生活表允許您指定配置隔離管道在發展中,測試和生產環境。本文中的建議都適用於SQL和Python代碼開發。
使用開發模式運行管道更新
三角洲生活表提供了一個界麵切換控製您的管道是否更新在開發或生產模式下運行。這種模式控製管道更新處理,包括:
發展模式並不會立即終止後計算資源更新成功或失敗。您可以重用相同的計算資源來運行多個更新管道無需等待一個集群開始。
發展模式並不會自動重試任務失敗,允許您立即檢測並修複邏輯或語法錯誤在你的管道。
磚推薦使用的開發模式在開發和測試期間,總是時切換到生產模式部署到生產環境中。
看到開發和生產模式。
指定一個目標模式在開發生命周期的所有階段
δ住表中的所有數據集管道引用生活
虛擬模式,無法訪問外部管道。如果指定了目標模式,生活
虛擬模式指向目標模式。審查結果寫入每個表在一個更新,您必須指定一個目標模式。
您必須指定一個目標模式是獨特的環境。每個表在一個給定的模式隻能由單一管道更新。
通過創建單獨的管道進行開發、測試和生產有不同的目標,你可以讓這些環境孤立。使用目標模式參數允許您刪除邏輯使用字符串插值或其他小部件或參數來控製數據源和目標。
使用磚回購協議來管理三角洲住表管道
磚建議使用回購在三角洲生活表管道開發、測試和部署到生產環境。回購使以下:
跟蹤代碼是如何改變的。
由多個開發人員合並更改。
代碼評審等軟件開發實踐。
磚建議配置一個Git存儲庫的所有代碼相關的管道。
每個開發人員都應該有自己的發展磚回購的配置。在開發過程中,用戶配置自己的管道從磚回購使用開發和測試新的邏輯數據和孤立的模式和位置。開發工作完成後,用戶提交和推動變化回到他們在中央Git存儲庫並打開一個拉請求對測試或QA部門。
由此產生的分支應該檢出磚回購和管道配置使用測試數據集和開發模式。假設邏輯按預期運行,把請求或發布分支應該準備推動生產的變化。
而回購可以用來同步代碼在環境中,管道設置需要保持最新手動或使用工具像起程拓殖。
這個工作流是類似於使用回購對CI / CD的磚的工作。看到CI / CD與Git工作流集成和磚回購。
段庫攝入和轉換步驟
磚建議隔離攝取的查詢數據轉換邏輯,豐富和驗證數據。你可以組織庫用於攝取來自開發或測試數據源的數據在一個單獨的目錄從生產數據攝入邏輯,允許您輕鬆地配置管道各種環境。然後,您可以使用較小的數據集進行測試,加速發展。看到為開發和測試創建樣本數據集。
還可以使用參數控製數據源開發、測試和生產。看到控製數據源參數。
因為δ住表管道使用生活
虛擬模式來管理所有數據集關係,通過配置開發和測試管道與攝入庫加載示例數據,您可以使用生產替代樣本數據集表名來測試代碼。相同的轉換邏輯可以在所有環境中使用。
為開發和測試創建樣本數據集
磚建議創建開發和測試數據集測試管道邏輯與預期數據和潛在的畸形或腐敗的記錄。有多種方法來創建數據集,可以用於開發和測試,包括以下:
選擇數據從生產數據集的一個子集。
使用匿名或包含PII人工生成的數據來源。
創建測試數據與基於下遊轉換邏輯的定義良好的結果。
預測潛在的數據損壞,畸形的記錄,和上遊數據變化通過創建記錄,打破數據模式的期望。
例如,如果你有一個筆記本,定義了一個數據集使用下麵的代碼:
創建或刷新流媒體生活表input_data作為選擇*從cloud_files(“/生產/數據”,“json”)
你可以創建一個示例數據集包含具體的記錄使用查詢如下:
創建或刷新生活表input_data作為選擇“2021/09/04”作為日期,22。4作為sensor_reading聯盟所有選擇“2021/09/05”作為日期,21。5作為sensor_reading
下麵的例子演示了過濾公布的數據創建生產數據的一個子集開發或測試:
創建或刷新生活表input_data作為選擇*從刺激。input_data在哪裏日期>當前日期()- - - - - -時間間隔1一天
使用這些不同的數據集,創建多個管道與筆記本電腦轉換邏輯的實現。每個管道可以讀取的數據LIVE.input_data
數據集但配置包括筆記本,創建特定於環境的數據集。
控製數據源參數
你可以參考參數設置在管道配置從內庫。這些參數設置的鍵-值對先進計算> >配置部分管道設置UI。這種模式允許您指定不同的數據源配置相同的管道。
例如,您可以指定不同的路徑在開發、測試和生產配置管道使用變量data_source_path
然後參考使用下麵的代碼:
創建流媒體生活表青銅作為(選擇*,input_file_name()作為source_file_name從cloud_files(“$ {data_source_path}”,“csv”,地圖(“頭”,“真正的”)))
進口dlt從pyspark.sql.functions進口input_file_namedata_source_path=火花。相依。得到(“data_source_path”)@dlt。表def青銅():返回(火花。readStream。格式(“cloudFiles”)。選項(“cloudFiles.format”,“csv”)。選項(“頭”,真正的)。負載(data_source_path)。選擇(“*”,input_file_name()。別名(“source_file_name”)))
這種模式是特別有用如果你需要測試攝入邏輯如何處理模式或畸形變化數據在最初的攝入。您可以使用相同的代碼在整個管道斷開數據集時在所有環境中。