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