首頁 > 後端開發 > Python教學 > ETL 中多少自動化才算是太多自動化

ETL 中多少自動化才算是太多自動化

Susan Sarandon
發布: 2024-12-29 08:48:15
原創
742 人瀏覽過

How Much Automation is Too Much Automation in ETL

ETL(提取、轉換、加載)管道中的自動化是一把雙面刃。一方面,它使我們免於繁瑣、重複的任務,加快工作流程,並減少人為錯誤的可能性。但另一方面,也存在太多自動化的問題——原本旨在讓生活變得更簡單的事情最終變得更加複雜、僵化,甚至難以管理。

那麼,我們在哪裡劃清界線呢?我們如何在有效的自動化和過度設計之間取得適當的平衡?讓我們以一種愉快、親切的方式來探索這個問題。

自動化的黃金承諾
讓我們設定一個場景:您正在開發一個資料項目,其中原始資料從各種來源湧入。應用程式的日誌、來自行銷的 CSV、來自第三方供應商的 JSON 檔案 — 很混亂,對嗎?您的 ETL 管道可以助您一臂之力!提取原始數據,將其轉換為可用的格式,並將其加載到倉庫中,以便您的分析師可以愉快地查詢。

自動化自然而然地成為你最好的朋友:

使用 Airflow 或其他協調器排程作業。
使用預先建置的庫進行常見轉換。
監控管道以標記錯誤。
按需旋轉 Glue 或 Databricks 作業。

但是當這位朋友逾期不受歡迎時會發生什麼事?

過度自動化:當簡單變成複雜

  1. 無需業務理解的自動化

想像一下,您正在嘗試自動化所有可能的邊緣情況,因為您的團隊擔心手動幹預。您編寫腳本來處理每個可以想像的資料轉換:遺失的列、模式演進、失敗的分割區和奇怪的檔案格式。

很快,您的管道開始類似於魯布·戈德堡機器 - 一堆錯綜複雜的作業、腳本、重試和錯誤處理程序,沒有人完全理解。為什麼?因為自動化與業務優先順序或實際需求不符。

結果:

如果發生故障,故障排除將成為一場惡夢。
新進員工茫然地盯著你的劇本並問:「為什麼我們又需要那個?」
需求中的小調整會導致大修改。

教訓:並非每個問題都需要自動化。了解什麼對自動化至關重要,什麼更容易手動處理。

  1. 工具和框架的過度使用

在現代資料生態系統中,不缺少「幫助」您自動化 ETL 工作流程的工具:

編排:Apache Airflow、Prefect、Dagster。
轉換:dbt、Glue、Spark、Talend。
數據驗證:寄予厚望,Deequ。

在某些時候,有人說,「為什麼不全部使用它們呢?」

突然,Airflow 觸發了 dbt 作業,它呼叫 Spark 作業,然後將輸出記錄到 Great Expectations 進行驗證。聽起來不錯,對吧?但現在您已經分層瞭這麼多的工具:

除錯問題需要您跳過五個儀表板。
部署管道變得脆弱,因為每個工具都有其怪癖。
維護比最初建造管道需要更長的時間。

課程:使用最小可行堆疊。更多工具並不等於更好的自動化。

  1. 自動化不應該自動化的事情

僅僅因為你可以自動化某些東西並不意味著你應該這樣做。舉例:

案例 1:自動處理 ETL 作業中的架構不符。聽起來不錯,但如果您的資料模式意外更改,您真的希望您的管道默默地繼續前進嗎?

案例2:自動刪除「有問題」的資料行,無需人工幹預。當然,管道成功了,但現在您的報告中缺少數據,並且沒有任何錯誤的痕跡。

ETL 的某些面向(尤其是那些需要判斷或監督的面向)最好留給人類。

課程:在有明確、確定性規則的情況下自動化。將灰色地帶留給人為幹預。

現實生活中過度自動化的恐怖故事

  1. 無法停止運作的管道

一個團隊自動化了重試機制,以確保他們的資料處理管道「永遠不會失敗」。從紙面上看,這是有道理的:如果出現問題,只需重試,直到成功為止。

他們沒有預料到的是:錯誤的上游文件導致他們的管道進入無限重試循環,消耗雲端資源並產生巨額帳單。哎呀!

  1. 參數化之死

為了使他們的 ETL 管道變得“通用”,資料團隊引入了 100 個參數。新團隊成員花更多時間了解要調整哪些參數,而不是做有意義的工作。

諷刺的是,過度參數化的管道不如更簡單的硬編碼版本靈活。

  1. 警報變得瘋狂

團隊自動監控,針對每次 ETL 故障(無論大小)發送警報。一個月之內,警報變成了背景噪音。當嚴重錯誤發生時,沒有人注意到,因為他們已經忽略了噪音。

取得適當的平衡:健康自動化的原則
那麼,如何防止 ETL 自動化過度呢?遵循以下原則:

  1. 從簡單開始,逐步建構

自動化之前,先問問自己:

這個過程是否夠頻繁以證明自動化是合理的?
失敗的成本與手動介入的成本是多少?

從最小的自動化開始。觀察痛點,然後自動化這些部分。

  1. 擁抱失敗與人工監督

不要試圖讓你的管道防彈,而是讓故障浮出水面,以便對其進行分析。建立儀表板和日誌,以便清楚了解問題所在。針對高風險或不明確的場景引入手動幹預。

  1. 遵循 KISS 原則(保持簡單、愚蠢)

ETL 管道應該很容易:

明白。
偵錯.
延長。

如果添加更多自動化使其中任何一個變得複雜,請重新考慮其必要性。

  1. 使自動化與業務需求一致

始終將 ETL 自動化與業務目標連結:

它是否為分析師和工程師節省了時間?
它是否提高了數據品質和可靠性?
它會降低營運成本嗎?

如果答案是否定的,那麼您可能過度自動化。

結論:自動化作為工具,而不是目標
ETL 自動化旨在增強資料團隊的能力,而不是讓他們負擔過重。這是一個工具,而不是最終目標。當自動化程度過高時,它會為您的工作流程帶來複雜性、僵化和脆弱性。

關鍵重點:有意實現自動化。了解每個決策背後的原因,保持流程簡單,並為人工監督留出空間。有時,一點點手工工作比一團混亂的過度設計的自動化要好得多。

所以,下次當你發現自己說「讓我們也自動化這個」時,停下來問一下:這是必要的嗎,還是我正在建造一台 Rube Goldberg 機器?

保持簡單。保持可控。保持人性。

以上是ETL 中多少自動化才算是太多自動化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板