數據質量監控工具-Apache Griffin

[TOC]html

1、概述

隨着業務發展和數據量的增長,大數據應用開發已成爲部門應用開發經常使用的開發方式,因爲部門業務特色的關係,spark和hive應用開發在部門內部較爲常見。當處理的數據量達到必定量級和系統的複雜度上升時,數據的惟一性、完整性、一致性等等校驗就開始受到關注,而一般作法是根據業務特色,額外開發job如報表或者檢查任務,這樣會比較費時費力。git

目前遇到的表大部分在幾億到幾十億的數據量之間,而且報表數量在不斷增長,在這種狀況下,一個可配置、可視化、可監控的數據質量工具就顯得尤其重要了。Griffin 數據質量監控工具正是能夠解決前面描述的數據質量問題的開源解決方案。github

2、Apache Griffin

Griffin起源於eBay中國,並於2016年12月進入Apache孵化器,Apache軟件基金會2018年12月12日正式宣佈Apache Griffin畢業成爲Apache頂級項目。正則表達式

Griffin是屬於模型驅動的方案,基於目標數據集合或者源數據集(基準數據),用戶能夠選擇不一樣的數據質量維度來執行目標數據質量的驗證。支持兩種類型的數據源:batch數據和streaming數據。對於batch數據,咱們能夠經過數據鏈接器從Hadoop平臺收集數據。對於streaming數據,咱們能夠鏈接到諸如Kafka之類的消息系統來作近似實時數據分析。在拿到數據以後,模型引擎將在spark集羣中計算數據質量。算法

2.1 特性

  • 度量:精確度、完整性、及時性、惟一性、有效性、一致性。
  • 異常監測:利用預先設定的規則,檢測出不符合預期的數據,提供不符合規則數據的下載。
  • 異常告警:經過郵件或門戶報告數據質量問題。
  • 可視化監測:利用控制面板來展示數據質量的狀態。
  • 實時性:能夠實時進行數據質量檢測,可以及時發現問題。
  • 可擴展性:可用於多個數據系統倉庫的數據校驗。
  • 可伸縮性:工做在大數據量的環境中,目前運行的數據量約1.2PB(eBay環境)。
  • 自助服務:Griffin提供了一個簡潔易用的用戶界面,能夠管理數據資產和數據質量規則;同時用戶能夠經過控制面板查看數據質量結果和自定義顯示內容。

2.1.1 數據質量指標說明

  • 精確度:度量數據是否與指定的目標值匹配,如金額的校驗,校驗成功的記錄與總記錄數的比值。
  • 完整性:度量數據是否缺失,包括記錄數缺失、字段缺失,屬性缺失。
  • 及時性:度量數據達到指定目標的時效性。
  • 惟一性:度量數據記錄是否重複,屬性是否重複;常見爲度量爲hive表主鍵值是否重複。
  • 有效性:度量數據是否符合約定的類型、格式和數據範圍等規則。
  • 一致性:度量數據是否符合業務邏輯,針對記錄間的邏輯的校驗,如:pv必定是大於uv的,訂單金額加上各類優惠以後的價格必定是大於等於0的。

2.2 優點

  • 可配置、可自定義的數據質量驗證。
  • 基於spark的數據分析,能夠快速計算數據校驗結果。
  • 歷史數據質量趨勢可視化。

2.3 工做流程

  1. 註冊數據,把想要檢測數據質量的數據源註冊到griffin。
  2. 配置度量模型,能夠從數據質量維度來定義模型,如:精確度、完整性、及時性、惟一性等。
  3. 配置定時任務提交spark集羣,定時檢查數據。
  4. 在門戶界面上查看指標,分析數據質量校驗結果。

2.4 系統架構

Griffin 系統主要分爲:數據收集處理層(Data Collection&Processing Layer)、後端服務層(Backend Service Layer)和用戶界面(User Interface),如圖:apache

Griffin技術組件

系統數據處理分層結構圖:後端

Griffin架構圖

系統處理流程圖:api

Griffin工做流

2.5 數據驗證邏輯

2.5.1 精確度驗證(accurancy),從hive metadata中加載數據源,校驗精確度架構

  • 選擇source表及列
  • 選擇target表及列
  • 選擇字段比較規則(大於、小於或者相等)
  • 經過一個公式計算出結果:

精確度計算公式

  • 最後在控制面板查看精確度趨勢

精確度趨勢圖

2.5.2 數據統計分析(profiling)ide

  • 選擇須要進行分析的數據源,配置字段等信息。
  • 簡單的數據統計:用來統計表的特定列裏面值爲空、惟一或是重複的數量。例如統計字段值空值記錄數超過指定一點閾值,則可能存在數據丟失的狀況。
  • 彙總統計:用來統計最大值、最小值、平均數、中值等。例如統計年齡列的最大值最小值判斷是否存在數據異常。
  • 高級統計:用正則表達式來對數據的頻率和模式進行分析。例如郵箱字段的格式驗證,指定規則的數據驗證。
  • 數據分析機制主要是基於Spark的MLlib提供的列彙總統計功能,它對全部列的類型統計只計算一次。
  • 控制面板分析數據

數據統計圖

2.5.3 異常檢測

  • 異常檢測的目標是從看似正常的數據中發現異常狀況,是一個檢測數據質量問題的重要工具。經過使用BollingerBands和MAD算法來實現異常檢測功能,能夠發現數據集中那些遠遠不符合預期的數據。

  • 以MAD做爲例子,一個數據集的MAD值反映的是每一個數據點與均值之間的距離。能夠經過如下步驟來獲得MAD值:

    • 算出平均值
    • 算出每個數據點與均值的差
    • 對差值取絕對值
    • 算出這些差值取絕對值以後的平均值

    公式以下: MAD公式

    經過異常檢測能夠發現數據值的波動大小是否符合預期,數據的預期值則是在對歷史趨勢的分析中得來的,用戶能夠根據檢測到的異常來調整算法中必要的參數,讓異常檢測更貼近需求。

2.6 Demo

以檢測供應商帳單明細表的同步精確度爲例,配置數據檢測,如圖:

  • 選擇數據源

  • 選擇帳單明細源表字段

選擇源表字段

  • 選擇帳單明細目標表字段

選擇目標表字段

  • 設置源表和目標表的校驗字段映射關係

設置映射關係

  • 選擇數據分區、條件和是否輸出結果文件。(無分區表能夠跳過)

選擇分區條件

  • 設置驗證項目名稱和描述,提交後就能夠在列表看到度量的信息了

設置名稱和描述

度量列表

建立了數據模型度量後,須要相應的spark定時任務來執行分析,接下來就是建立spark job和調度信息了

  • 在job菜單下,選擇Create Job

建立job

建立job界面中須要選擇源表和目標表數據範圍,如上圖所示是選擇t-1到當前的數據分區,即昨天的數據分區。設置定時表達式,提交任務後便可在job列表中查看:

job任務執行

  • 到這裏,數據驗證度量和分析任務都已配置完成,後面還可根據你的指標設置郵件告警等監控信息,接下來就能夠在控制面板上監控你的數據質量了,如圖:

2.7 後臺提交監控任務

除了用戶在控制面板建立數據驗證任務,也能夠經過後臺生成指標信息,提交spark任務進行數據檢測,提供了良好的數據接入和配置的擴展性,api配置數據檢測可查看官網快速指引

實時數據檢測目前未有界面配置,能夠經過api的方式提交實時數據監控,詳細內容能夠參考:Streaming Use Cases

賴澤坤@vipshop.com

參考文檔

相關文章
相關標籤/搜索