[TOC]html
隨着業務發展和數據量的增長,大數據應用開發已成爲部門應用開發經常使用的開發方式,因爲部門業務特色的關係,spark和hive應用開發在部門內部較爲常見。當處理的數據量達到必定量級和系統的複雜度上升時,數據的惟一性、完整性、一致性等等校驗就開始受到關注,而一般作法是根據業務特色,額外開發job如報表或者檢查任務,這樣會比較費時費力。git
目前遇到的表大部分在幾億到幾十億的數據量之間,而且報表數量在不斷增長,在這種狀況下,一個可配置、可視化、可監控的數據質量工具就顯得尤其重要了。Griffin 數據質量監控工具正是能夠解決前面描述的數據質量問題的開源解決方案。github
Griffin起源於eBay中國,並於2016年12月進入Apache孵化器,Apache軟件基金會2018年12月12日正式宣佈Apache Griffin畢業成爲Apache頂級項目。正則表達式
Griffin是屬於模型驅動的方案,基於目標數據集合或者源數據集(基準數據),用戶能夠選擇不一樣的數據質量維度來執行目標數據質量的驗證。支持兩種類型的數據源:batch數據和streaming數據。對於batch數據,咱們能夠經過數據鏈接器從Hadoop平臺收集數據。對於streaming數據,咱們能夠鏈接到諸如Kafka之類的消息系統來作近似實時數據分析。在拿到數據以後,模型引擎將在spark集羣中計算數據質量。算法
Griffin 系統主要分爲:數據收集處理層(Data Collection&Processing Layer)、後端服務層(Backend Service Layer)和用戶界面(User Interface),如圖:apache
系統數據處理分層結構圖:後端
系統處理流程圖:api
2.5.1 精確度驗證(accurancy),從hive metadata中加載數據源,校驗精確度架構
2.5.2 數據統計分析(profiling)ide
2.5.3 異常檢測
異常檢測的目標是從看似正常的數據中發現異常狀況,是一個檢測數據質量問題的重要工具。經過使用BollingerBands和MAD算法來實現異常檢測功能,能夠發現數據集中那些遠遠不符合預期的數據。
以MAD做爲例子,一個數據集的MAD值反映的是每一個數據點與均值之間的距離。能夠經過如下步驟來獲得MAD值:
公式以下:
經過異常檢測能夠發現數據值的波動大小是否符合預期,數據的預期值則是在對歷史趨勢的分析中得來的,用戶能夠根據檢測到的異常來調整算法中必要的參數,讓異常檢測更貼近需求。
以檢測供應商帳單明細表的同步精確度爲例,配置數據檢測,如圖:
建立了數據模型度量後,須要相應的spark定時任務來執行分析,接下來就是建立spark job和調度信息了
建立job界面中須要選擇源表和目標表數據範圍,如上圖所示是選擇t-1到當前的數據分區,即昨天的數據分區。設置定時表達式,提交任務後便可在job列表中查看:
除了用戶在控制面板建立數據驗證任務,也能夠經過後臺生成指標信息,提交spark任務進行數據檢測,提供了良好的數據接入和配置的擴展性,api配置數據檢測可查看官網快速指引。
實時數據檢測目前未有界面配置,能夠經過api的方式提交實時數據監控,詳細內容能夠參考:Streaming Use Cases。
參考文檔