pb利用datawindow查询符合条件的数据并且过滤掉其他数据_数据质量监测
1 Overview
1.1 數據質量
在數據部門里,數據質量問題經常是被動發現,所以數據質量的問題是大多數公司數據部門都不得不面對的問題。數據質量校驗的目標是監控數據管道中,生產者、處理階段以及消費者的數據的正確性、一致性和及時性的一項系統工程。數據質量需要對數據進行校驗,當產生嚴重的數據污染等事件的時候需要告警和阻塞數據處理鏈路,最大限度的減少由于上下游數據質量而產生的問題。
1.2 一些術語
......(待補充)
2 監控手段
監控手段主要包括兩個方面,一是監,數據質量校驗,二是控,告警和處理。
2.1 數據質量校驗
根據數據質量校驗的對象,可以分為兩種形式:
數據質量監控規則包括可以有多種形式:
根據校驗范圍,還可以分成兩種形式:
2.2 告警和處理
告警和處理分為兩個階段,一是告警,當數據質量出現問題的時候,需要及時通知責任人,二是處理,出現上游數據污染,根據規則級別,需要及時阻塞下游任務,并處理上游任務。
3 實現方案的初想
3.1 離線檢測
關于離線檢查,最典型的場景應該有兩個,一是0行檢測,二是閾值檢測。
0行檢測可以理解成一些表不應該存在0行的情況,如果有,需要及時告警和排查原因,甚至是0行數據會影響下游任務,需要考慮阻斷下游任務的繼續執行,一方面減少下游任務異常的多余告警,二來節省下游任務執行的資源。
對于 Hive 來說,Hive Metastore 的查詢,利用 HiveMetaStoreClient,定時獲取各表的行數,可以作為離線監測的基礎,又或者是利用 Hive Hook 來收集行數等信息。檢查0行是相對簡單的,只要一條 sql 就可以。這個可以作為一個定時的離線任務,定時執行,甚至是作為整個任務流 DAG 中的中間表任務生產后自動觸發檢查。
select a.TBL_ID, a.TBL_NAME, b.PARAM_KEY, b.PARAM_VALUE from TBLS as a join TABLE_PARAMS as b where a.TBL_ID = b.TBL_ID and TBL_NAME="call_center" and PARAM_KEY="numRows";+--------+-------------+-----------+-------------+ | TBL_ID | TBL_NAME | PARAM_KEY | PARAM_VALUE | +--------+-------------+-----------+-------------+ | 134 | call_center | numRows | 60 | +--------+-------------+-----------+-------------+閾值檢查的實現也非常容易,如果有離線/實時計算的平臺,可以提供一些類 sql 的語法,同樣是作為離線的定時任務來執行檢查。當然閾值檢查必須考慮檢查范圍的問題,抽樣肯定要比全量更效率更高,但是全量肯定比抽樣更穩妥,需要結合資源和業務來綜合衡量。
-- 設置檢查范圍 set checkMode = SAMPLING; -- 閾值檢查 select a from A where a > 100;3.2 實時檢查
數據采集結果數據接入之后,數據存在于 Kafka 中,如何實現動態流式的數據質量檢查呢?
需要明確一些具體的監測指標,比如 Kafka 消息中包含了不符合業務方定義的消息 schema,具體來看就是 key,需要告警并且在處理的時候過濾掉對應的 key;又或者是某些 key 的 value 小于預期的閾值,該條消息也需要屏蔽,以防止數據污染(屏蔽來不要緊,因為消息是有備份的,屏蔽只會影響下游程序)。
Flink 消費 Kafka 數據的時候,需要 FlinkKafkaConsumerxx,其中需要一個參數是針對接收到的每一條消息,key/value解序列化器,用于將字節數組形式的Kafka消息解序列化回對象,那么通過將規則實現在這里,并且通過 filter 語義來過濾,是可以實現實時的數據質量檢測的,一旦遇到不符合消息 schema 的 key,又或者是不符合閾值條件的 value,那么就需要對這條消息進行處理。
可能存在的問題:
4 一些想法
5 參考系統
6 Reference
總結
以上是生活随笔為你收集整理的pb利用datawindow查询符合条件的数据并且过滤掉其他数据_数据质量监测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab解带参数的积分方程组,方程组
- 下一篇: 如何判断理财产品的风险等级?各类理财产品