數據處理_HIVE增量ETL的一種方式


適用場景:

貼源層主表歷史數據過大,ETL不涉及歷史數據對比或聚合

處理流程:

1.確定一個業務主鍵字段或物理主鍵字段

2.確定一個可以判斷增量數據范圍的字段,這取決於具體的業務場景,一般選用記錄的創建時間或最后修改時間

3.確定一個分區字段,要求一段增量數據盡可能落在較少的分區,這里選用創建時間或最后修改時間的年月值

4.根據增量字段過濾主表,創建增量臨時表

5.使用增量臨時表完成要做ETL過程,得到一個增量結果表

6.獲取增量結果表的分區字段Distinct值,存入一張表,下面把這些值簡稱為pt值,即partition值

7.將全量結果表(全量初始化過的)根據pt值過濾分區,再與增量結果表用業務主鍵full join,使用增量NVL字段優先取增量結果表上的,數據重新覆蓋正式結果表分區。

8.代碼案例后面會補充

 

不足點:不適用於源表經常修改歷史數據的情況下,因為pt會跨越多個分區。如果同一記錄修改不會反復多次修改,用最后修改時間可以優化這個問題

 

關於如何使用pt值過濾全量結果表:

pt值肯定要存入表

1.通過shell調用sql查詢pt值,並解析返回內容,預處理好,然后作為執行參數傳入到要執行的sql

2.或者使用where 分區字段 IN (子查詢pt值),未驗證,過濾性能可能有問題。

 

PS:貼源層一般會做ISU分區,增量表生成可以直接用I、S分區的,ISU分區會有補充貼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM