什麼是大資料血緣?

testingbang發表於2019-08-30

今天跟一個測試同事聊天:

我:最近忙什麼專案呢?
他:在測大資料血緣
我:啥?
他:血緣啊
我:啥血緣?
他:大資料血緣啊
我:血緣是啥?
他:就是資料血緣啊
我:...

看看,天就是這麼被聊死的,我忍不住內心OS(怪不得你禿頂還沒女朋友)

我趕緊回來問問 google,分析了各路答案之後,可以總結成兩句話:

通常我們會對原始資料進行多個步驟的各種加工,最後產生出新的資料,在這個過程中會產生很多表,這些資料表之間的鏈路關係就可稱為大資料血緣。
大資料血緣測試,就是測試資料流轉過程中的每個環節的資料質量。
同時,資料血緣還有幾個同義詞:

Data Lineage 資料血緣(資料血統) = Data Provenance 資料起源 = Data Pedigree 資料譜系

在現實世界中,我們每個個體都是祖先透過生育關係一代代 孕育而來,這樣就形成了我們人類的各種血緣關係。

在資料資訊時代,每時每刻都會產生龐大的資料,即我們通常說的大資料,對這些資料進行各種加工組合、轉換,又會產生新的資料,這些資料之間就存在著天然的聯絡,我們把這些聯絡稱為資料血緣關係。

直白點說,資料血緣就是指資料產生的鏈路關係,就是這個資料是怎麼來的,經過了哪些過程和階段。

下面舉個通俗點的例子:

比如在淘寶網中,客戶在淘寶網頁中購買物品後,資料就被存到後臺資料庫表A中。我們希望檢視某個月賣的最火的是哪些物品時,就需要對資料庫中的原始資料進行加工彙總,形成一張中間表B來儲存階段處理的資料,若邏輯較複雜時,還要繼續加工繼續形成中間表。。。直到最後處理成我們前臺展現使用的最終表,假設為C表。

那麼A表是C表資料最初的來源,是C表資料的祖先。從A表資料到B表資料再到C表資料,這條鏈路就是C表的資料血緣。

在資料的處理過程中,從資料來源頭到最終的資料生成,每個環節都可能會導致我們出現資料質量的問題。比如我們資料來源本身資料質量不高,在後續的處理環節中如果沒有進行資料質量的檢測和處理,那麼這個資料資訊最終流轉到我們的目標表,它的資料質量也是不高的。也有可能在某個環節的資料處理中,我們對資料進行了一些不恰當的處理,導致後續環節的資料質量變得糟糕。

因此,對於資料的血緣關係,我們要確保每個環節都要注意資料質量的檢測和處理,那麼我們後續資料才會有優良的基因,即有很高的資料質量。

資料血緣的常見分析過程:

現在假設你是一名資料開發工程師,為了滿足某個業務需求,需要生成最終表 X。

可能是出於程式邏輯清晰或者效能最佳化的考慮,你為了生成這張表,透過 MR、Spark 或者 Hive 來生成很多中間表。

如下圖,是你將花費時間來實現的整個資料流,其中:

Table X 是最終給到業務側的表
藍色的 Table A-E,是原始資料
黃色的 Table F-I ,是你計算出來的中間表,這些都是你自己寫程式要處理的表
Table J ,是別人處理過的結果表,因為本著不重複開發的原則,你很可能要用到同事小夥伴處理的表
å¨è¿éæ入å¾çæè¿°

過了一段時間後,業務側的感覺你提供的資料中有個欄位總是不太對勁,其實就是懷疑你的資料出問題!需要你來追蹤一下這個欄位的來源。

首先你從 Table X 中找到了異常的欄位,然後定位到了它來源於 Table I,再從 Table I 定位到了它來源於 Table G, 再從 Table G 追溯到了 Table D,最終發現是某幾天的來源資料有異常。或者說,你從 Table X 定位到了異常的欄位原來來自於其它小夥伴處理的表 Table J,然後繼續向前回溯,找到了這張表在處理過程中的某一個步出現了問題。

上面的過程是資料血緣分析的過程。

到此,相信你已經大概明白血緣是啥了。

再囉嗦兩句,其實資料血緣並不難,只是概念比較高大上而已,實際我們測試的時候跟普通的 sql 操作差不多,只是用到的語法是 hive、sqoop、pig 等元件相對應的語法,不是常見的 sql 語法而已。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69942496/viewspace-2655508/,如需轉載,請註明出處,否則將追究法律責任。

相關文章