什麼是冪等資料管道? - Alaro
牛津詞典中定義的冪等“是集合中的一個元素,當它自身相乘或以其他方式運算時,其值不變。”
1.什麼是冪等資料管道
執行從源獲取資料並將其多次載入到關聯式資料庫中的管道可能會導致資料庫中存在重複值,從而導致錯誤的指標和許多其他錯誤。使管道冪等將防止這種情況發生,並使您成為更好的工程師。
換句話說,使用相同的輸入多次執行資料管道將始終產生相同的輸出。
2. 冪等資料管道的優點
下面列出了冪等資料管道的一些優點
- 確保在回填的情況下不會對儲存位置產生重複資料
- 它使管道中的轉換結果可預測
- 它有助於減少資料儲存費用
- 它還有助於刪除舊的/不需要的資料
3.如何使資料管道具有冪等性
資料管道中最常見的步驟是
- 從一個或多個源中提取資料
- 執行一些轉換
- 載入到資料倉儲
冪等管道將確保如果列出的步驟中發生任何錯誤,仍會產生預期的結果作為輸出。
如果在載入階段發生錯誤,資料沒有完全載入到資料倉儲中,我們的冪等管道應該從資料倉儲中刪除半載入的資料,並在管道重新執行時將新的資料儲存為完全載入的資料. 僅當資料管道在重新執行時將生成所需的相同資料時才建議這樣做。這種模式被稱為刪除-寫入模式。Spark、Snowflake 等技術提供了其他冪等設計模式,如spark-overwrite。
下面提供了一種在 python 中實現delete-write模式的方法:
import pandas as pd import os import shutil def extract(path: str = "s3://my_bucket_name/file0.parquet") -> pd.DataFrame: df = pd.read_parquet(path) return df # remove error rows def transform(df: pd.DataFrame) -> pd.DataFrame: df_clean = df[df['customerId'] != 'A'] return df_clean def load_dwh(df: pd.DataFrame, output_location: str) -> None: if os.path.exists(output_location) == True: # removes the entire folder shutil.rmtree(output_location) os.makedir(output_location) df.to_csv(filename.csv) else: df.to_csv(filename.csv) return None |
在上面的片段中,我實現了一個簡單的ETL管道,從s3桶中獲取parquet檔案,並使用pandas read_parquet來讀取它。然後根據確定的業務邏輯對資料進行轉換,在我的例子中,它刪除了所有customer_id等於A的記錄。
在這裡,load_dwh函式接受兩個引數:資料框架和output_location,檢查output_location是否已經存在,如果在載入資料時發生錯誤,就會出現這種情況,然後刪除output_location中指定的資料夾,用新的資料重新建立它。
4。結論
擁有冪等資料管道可以避免資料工程師的很多麻煩,尤其是當資料管道由於錯誤或業務邏輯更改而需要多次重新執行時。
相關文章
- 什麼是冪等
- 什麼是冪等性?四種介面冪等性方案詳解!
- 【Java面試】什麼是冪等?如何解決冪等性問題?Java面試
- 什麼是分散式系統中的冪等性分散式
- 小白解釋:什麼是分散式微服務中的冪等? - LispCast分散式微服務LispPCAAST
- Linux管道命令是什麼?如何使用?Linux
- 為什麼 HTTP PATCH 方法不是冪等的及其延伸HTTP
- 什麼是大資料?大資料能做什麼?大資料
- 什麼是大資料?大資料開發是做什麼的?大資料
- 什麼是資料運營?資料運營是做什麼的?
- 什麼是qps,tps,併發量,pv,uv、介面冪等性、悲觀鎖樂觀鎖
- 什麼是資料流?
- 什麼是資料蔓延?
- 什麼是大資料?大資料
- 等保三級全稱是什麼?是什麼意思?
- 在Linux中,什麼是管道?它是如何工作的?Linux
- 什麼是等保測評?等保測評資質有哪些?
- 什麼是資料標註,它的用途是什麼?
- 到底什麼是大資料?新手學大資料的路徑是什麼?大資料
- 什麼是資料和資訊
- 什麼是資料質量?
- 什麼是資料轉換?
- 什麼是資料準備?
- Chronicles 是什麼資料庫資料庫
- 什麼是資料倉儲
- 什麼是皇帝資料庫?資料庫
- 什麼是資料倉儲?
- 什麼是資料增強?
- 什麼是資料結構資料結構
- 什麼是大資料安全?大資料
- 資料治理:什麼是MDM?
- 大資料分析是什麼大資料
- 什麼是Cassandra資料庫資料庫
- 資料卷是什麼?資料卷有什麼優勢嗎?
- 在Linux中,什麼是管道操作,以及如何使用它?Linux
- Linux中的管道是什麼?管道與共享記憶體的區別有哪些?Linux記憶體
- 什麼是等級保護?一級等保和三級等保有什麼區別?
- 什麼是大資料?Python和大資料有什麼聯絡?大資料Python