ETL簡介
ETL,是英文 Extract-Transform-Load 的縮寫,用來描述將數據從來源端經過萃取(extract)、轉置(transform)、加載(load)至目的端的過程。
ETL是數據抽取(Extract)、清洗(Cleaning)、轉換(Transform)、裝載(Load)的過程。是構建數據倉庫的重要一環,用戶從數據源抽取出所需的數據,經過數據清洗,最終按照預先定義好的數據倉庫模型,將數據加載到數據倉庫中去。
目前,ETL工具的典型代表有:Informatica、Datastage、OWB、微軟DTS、Beeload、Kettle……
開源的工具有eclipse的etl插件:cloveretl。
ETL產品的選型,需要從四點(即成本、人員經驗、案例和技術支持) 來考量。
ETL的質量問題具體表現為正確性、完整性、一致性、完備性、有效性、時效性和可獲取性等幾個特性。
實現ETL,首先要實現ETL轉換的過程。它可以集中地體現為以下幾個方面:
1、空值處理:可捕獲字段空值,進行加載或替換為其他含義數據,並可根據字段空值實現分流加載到不同目標庫。
2、規范化數據格式:可實現字段格式約束定義,對於數據源中時間、數值、字符等數據,可自定義加載格式。
3、拆分數據:依據業務需求對字段可進行分解。例,主叫號 861082585313-8148,可進行區域碼和電話號碼分解。
4、驗證數據正確性:可利用Lookup及拆分功能進行數據驗證。例如,主叫號861082585313-8148,進行區域碼和電話號碼分解后,可利用Lookup返回主叫網關或交換機記載的主叫地區,進行數據驗證。
5、數據替換:對於因業務因素,可實現無效數據、缺失數據的替換。
6、Lookup:查獲丟失數據 Lookup實現子查詢,並返回用其他手段獲取的缺失字段,保證字段完整性。
7、建立ETL過程的主外鍵約束:對無依賴性的非法數據,可替換或導出到錯誤數據文件中,保證主鍵唯一記錄的加載。
基於Storm的ETL設計
-
通用ETL功能設計
1、通用的Spout來處理各類抽取:數據庫、消息系統、csv文件、RESTful服務等;
2、通用的Bolt來處理各類校驗:空值、超長、過短、數據類型、正則表達式、關聯校驗(關聯數據是否存在/不存在?是否在指定范圍內?)等,支持校驗后的數據替換處理;
3、通用的Bolt來處理各類數據拆分與合並:字符串處理(拆分、合並)、數學運算處理、日期時間處理、集合數據處理(計數、平均、求和、分組、排序等);
4、通用的Bolt來處理各類數據裝載:數據庫、消息系統、csv文件、RESTful服務;
-
輔助功能設計
1、數據統計功能
2、狀態跟蹤功能
3、拓撲管理功能
4、拓撲設計功能
ETL平台設計
1 設計目標:
1.1 數據的實時處理和推送
1) 實時獲取數據,
2) 支持多種格式數據
(JSON、DB、POJO、XML)
3) 內部統一數據結構(KV)
4) 能夠實現對數據的校驗:
空或非空、數據類型、長度、數據格式、關聯校驗(數據庫、緩存字典數據,加載字典和數據文件)
5) 能夠對校驗不通過的原因進行記錄
6) 能夠對數據進行實時處理
處理規則包括:數據類型轉換、字符分和合並、日期時間格式轉換、四則運算)
7) 能夠對處理后的數據進行輸出
輸出(DB、MQ)
8) 能夠對平台抽取和處理的數據進行統計
(抽取數據數,成功處理數,失敗處理數,失敗原因分類統計,抽取及處理的平均時長、最大時長、最短時長)
9) 能夠按照規則對校驗失敗的數據進行自動更正,並記錄日志
(定值更正、數據類型更正、長度更正)
1.2 容易使用,操作簡單
基於配置、配置工具(未來),監控工具
組件+javadoc+開發文檔+手冊
1.3 能夠支撐大數據,高並發的請求
(集群技術,流式計算技術)
1.4 高可用
zookeper集群、strom集群、fast-fail、消息系統
2 約束:
為保證平台計算的實時性,平台不考慮數據存儲,僅以MQ式來支持HBase的設計
類圖設計記錄:
Use Case Model 下的 處理流圖;
Class Model 下的:
01 PackageModel 、02 JmsSpoutAndJmsBlot、03 DataStructureTrans 、
04 ValidateBlot 、05 CorrectBlotAndDataTransBlot