ETL簡介java
ETL,是英文 Extract-Transform-Load 的縮寫,用來描述將數據歷來源端通過萃取(extract)、轉置(transform)、加載(load)至目的端的過程。正則表達式
ETL是數據抽取(Extract)、清洗(Cleaning)、轉換(Transform)、裝載(Load)的過程。是構建數據倉庫的重要一環,用戶從數據源抽取出所需的數據,通過數據清洗,最終按照預先定義好的數據倉庫模型,將數據加載到數據倉庫中去。數據庫
目前,ETL工具的典型表明有:Informatica、Datastage、OWB、微軟DTS、Beeload、Kettle……緩存
開源的工具備eclipse的etl插件:cloveretl。數據結構
ETL產品的選型,須要從四點(即成本、人員經驗、案例和技術支持) 來考量。併發
ETL的質量問題具體表現爲正確性、完整性、一致性、完備性、有效性、時效性和可獲取性等幾個特性。eclipse
實現ETL,首先要實現ETL轉換的過程。它能夠集中地體現爲如下幾個方面:高併發
一、空值處理:可捕獲字段空值,進行加載或替換爲其餘含義數據,並可根據字段空值實現分流加載到不一樣目標庫。工具
二、規範化數據格式:可實現字段格式約束定義,對於數據源中時間、數值、字符等數據,可自定義加載格式。大數據
三、拆分數據:依據業務需求對字段可進行分解。例,主叫號 861082585313-8148,可進行區域碼和電話號碼分解。
四、驗證數據正確性:可利用Lookup及拆分功能進行數據驗證。例如,主叫號861082585313-8148,進行區域碼和電話號碼分解後,可利用Lookup返回主叫網關或交換機記載的主叫地區,進行數據驗證。
五、數據替換:對於因業務因素,可實現無效數據、缺失數據的替換。
六、Lookup:查獲丟失數據 Lookup實現子查詢,並返回用其餘手段獲取的缺失字段,保證字段完整性。
七、創建ETL過程的主外鍵約束:對無依賴性的非法數據,可替換或導出到錯誤數據文件中,保證主鍵惟一記錄的加載。
基於Storm的ETL設計
通用ETL功能設計
一、通用的Spout來處理各種抽取:數據庫、消息系統、csv文件、RESTful服務等;
二、通用的Bolt來處理各種校驗:空值、超長、太短、數據類型、正則表達式、關聯校驗(關聯數據是否存在/不存在?是否在指定範圍內?)等,支持校驗後的數據替換處理;
三、通用的Bolt來處理各種數據拆分與合併:字符串處理(拆分、合併)、數學運算處理、日期時間處理、集合數據處理(計數、平均、求和、分組、排序等);
四、通用的Bolt來處理各種數據裝載:數據庫、消息系統、csv文件、RESTful服務;
輔助功能設計
一、數據統計功能
二、狀態跟蹤功能
三、拓撲管理功能
四、拓撲設計功能
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