對于一個實時數(shù)據(jù)產(chǎn)品人員、或者開發(fā)人員來說,產(chǎn)品上展示的實時數(shù)據(jù),pv、uv、gmv等等,怎么知道這些數(shù)據(jù)是不是正確的呢?當(dāng)其他的小組開發(fā)的產(chǎn)品的數(shù)據(jù)(或者其他的數(shù)據(jù)提供方)又是另外一個數(shù)字,那么究竟該如何判斷自己的數(shù)據(jù)還是別人的數(shù)據(jù)是正確的呢?這就需要一套實時數(shù)據(jù)對數(shù)方案,本文主要從背景、實時數(shù)據(jù)計算方案、對數(shù)方案、總結(jié)四方面來介紹,說服老板或者讓其他人相信自己的數(shù)據(jù)是準(zhǔn)確的、無誤的。
一、背景:
相信做過實時數(shù)據(jù)統(tǒng)計的朋友,肯定會遇到一個問題,怎么知道自己算的數(shù)據(jù)是不是對的呢?比如:pv、uv、dau、gmv、訂單等等統(tǒng)計數(shù)據(jù)。
二、實時數(shù)據(jù)統(tǒng)計方案
上述流程圖描述了一般的實時數(shù)據(jù)計算流程,接收日志或者M(jìn)Q到kafka,用Flink進(jìn)行處理和計算,將最終計算結(jié)果存儲在redis中,最后查詢出redis中的數(shù)據(jù)給大屏、看板等展示。
但是在整個過程中,不得不思考一下,最后計算出來的存儲在redis中指標(biāo)數(shù)據(jù)是不是正確的呢?怎么能給用戶或者老板一個信服的理由呢?相信這個問題一定是困擾所有做實時數(shù)據(jù)開發(fā)的朋友。
比如說:離線的同事說離線昨天的數(shù)據(jù)訂單是1w,實時昨天的數(shù)據(jù)確實2w,存在這么大的誤差,到底是實時計算出問題了,還是離線出問題了呢?
三、對數(shù)解決方案
為了方便理解,還是拿上面離線和實時的下單金額為例。
某電商雙11實時數(shù)據(jù)大屏最終展示的GMV是200億,小李當(dāng)晚匯報給老板,雙11GMV是200億。第二天晨會,離線的同事小王匯報給老板,雙11GMV是300億。同時又有一個數(shù)據(jù)部門的同事小趙說,我們這邊計算的是192億。老板聽到這么多數(shù)據(jù),一瞬間就不知道該相信誰的呢?然后就說,小李、小王你們兩數(shù)據(jù)差距大,你們對一下吧,匯報我一個最終結(jié)果。
于是,小王看著自己數(shù)據(jù)告訴小李:某人在我們平臺下了30個iphone x合計多少錢、某人又在我們這里買了10臺聯(lián)想筆記本電腦合計多少錢 .......
小李看著最終展示在大屏上的200億GMV,瞬間就蒙了,心里想道:我這里不知道誰買了多少個iphone呀,也不知道他們花了多少錢呀?
于是小李回去請教了自己的導(dǎo)師,導(dǎo)師說你把上面的實時寬表數(shù)據(jù)存儲下來,就可以和他們對了,就知道誰買了多少個iphone x了,誰有買了多少個聯(lián)想電腦了。
小李想了想,按照導(dǎo)師的思路開發(fā)如下的寬表加工方案:
(1)用Flink將實時寬表數(shù)據(jù)存儲至elasticsearch
將加工的寬表數(shù)據(jù)通過Flink寫入es,這樣可以得到所有數(shù)據(jù)的明細(xì)數(shù)據(jù),拿著明細(xì)和其他數(shù)據(jù)提供方進(jìn)行比對即可。
(2)用Flink實時寬表數(shù)據(jù)存儲至HDFS,通過Hive進(jìn)行查詢
但是有一些朋友可能會說,es對應(yīng)的sql count、group by語法操作,
什么叫軟文營銷?非常復(fù)雜,況且也不是用來做線上服務(wù),而只是用與對數(shù),所以時效性也不需要完全考慮,這樣的話,就可以考慮將數(shù)據(jù)回寫至HDFS了。
因此可以考慮采用下圖的方案,將加工的寬表通過Flink寫入到HDFS,然后新建hive表進(jìn)行關(guān)聯(lián)HDFS數(shù)據(jù)進(jìn)行關(guān)聯(lián)查詢。
寫HDFS與es相比,存在非常明顯的優(yōu)點:
a.學(xué)習(xí)成本低、會sql的基本就可以了,而不需要重新學(xué)習(xí)es負(fù)責(zé)的count、group by 等語法操作
b.可以非常方便地和離線表數(shù)據(jù)進(jìn)行關(guān)聯(lián)查詢(大多數(shù)情況下都是和離線數(shù)據(jù)比對),兩張Hive表的關(guān)聯(lián)查詢,容易找出兩張表的數(shù)據(jù)差異
最終小李拿著自己存儲的明細(xì)數(shù)據(jù)和小王對了一下,發(fā)現(xiàn)是小王的口徑不一樣,沒有排除一些預(yù)售訂單,最終小李將匯報給老板,得到了老板的嘉獎。
四、總結(jié)
實時計算能提供給用戶查看當(dāng)前的實時統(tǒng)計數(shù)據(jù),但是數(shù)據(jù)的準(zhǔn)確性確實一個很大的問題,如何說服用戶或者領(lǐng)導(dǎo)數(shù)據(jù)計算是沒有問題的,就需要和其他的數(shù)據(jù)提供方進(jìn)行比對了。問題的關(guān)鍵就在于,只要有明細(xì)數(shù)據(jù),就可以和任意一方進(jìn)行比對,畢竟有明細(xì)數(shù)據(jù)。不服?我們就對一對啊。
明細(xì)數(shù)據(jù)的存儲、設(shè)計也很有講究,可以和離線或者其他提供方的數(shù)據(jù)字段進(jìn)行對齊,這樣就非常方便進(jìn)行比對了,而采用hive這種方式又是最簡便的方式了,畢竟大多數(shù)人都是會sql的,無論開發(fā)人員還是數(shù)據(jù)人員或者BI人員。
網(wǎng)頁標(biāo)題:Flink實時計算指標(biāo)對數(shù)方案
URL地址:http://jinyejixie.com/article38/sdoisp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、網(wǎng)站排名、網(wǎng)站建設(shè)、定制開發(fā)、微信公眾號、建站公司
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)