對Storm ETL的初步思考

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

相關文章
相關標籤/搜索