本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)處理方法及裝置。
背景技術(shù):
對于網(wǎng)站而言,自然會涉及到用戶數(shù)據(jù)(例如,日訪問用戶數(shù)、周訪問用戶數(shù)、月訪問用戶數(shù)等)計(jì)算的相關(guān)問題。計(jì)算用戶數(shù)據(jù)不僅是數(shù)據(jù)分析的基礎(chǔ),也為網(wǎng)站運(yùn)營決策提供大數(shù)據(jù)的支持。
對于數(shù)據(jù)量相對較小網(wǎng)站,通常采用關(guān)系型數(shù)據(jù)庫存儲并計(jì)算用戶數(shù)據(jù),例如,mysql、oracle數(shù)據(jù)庫。計(jì)算用戶數(shù)據(jù)時,可以通過關(guān)系型數(shù)據(jù)庫執(zhí)行sql語句進(jìn)行計(jì)算所需的數(shù)據(jù);或者,數(shù)據(jù)量較大時,使用直接編輯文本數(shù)據(jù)的方式計(jì)算得到所需的數(shù)據(jù)。但是,當(dāng)網(wǎng)站每天訪問用戶達(dá)到億級,或者,訪問網(wǎng)站的次數(shù)達(dá)到千億級別時,用戶數(shù)據(jù)被存放在分布式集群中,不能采用應(yīng)用于關(guān)系型數(shù)據(jù)庫的計(jì)算方式進(jìn)行計(jì)算。因此,基于分布式集群,如何計(jì)算用戶數(shù)據(jù)成為亟需解決的技術(shù)問題。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種數(shù)據(jù)處理方法及裝置,計(jì)算得到基于分布式集群的用戶數(shù)據(jù)。具體的技術(shù)方案如下:
第一方面,本申請?zhí)峁┮环N數(shù)據(jù)處理方法,應(yīng)用于分布式存儲系統(tǒng)中,包括:
從所述分布式存儲系統(tǒng)中獲取目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶行為數(shù)據(jù);
獲取所述用戶行為數(shù)據(jù)所包含的用戶唯一標(biāo)識;
統(tǒng)計(jì)所述用戶行為數(shù)據(jù)中包含的互不相同的所述用戶唯一標(biāo)識的數(shù)量,得到所述目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶訪問數(shù)量。
可選地,所述預(yù)設(shè)周期為一天,則所述統(tǒng)計(jì)所述用戶行為數(shù)據(jù)中包含的互不相同的所述用戶唯一標(biāo)識的數(shù)量,得到所述目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶訪問數(shù)量,包括:
對于一天內(nèi)所述用戶行為數(shù)據(jù)所包含的用戶唯一標(biāo)識,逐個進(jìn)行兩兩比較,去除重復(fù)的用戶唯一標(biāo)識,得到互不相同的用戶唯一標(biāo)識集合;
計(jì)算所述用戶唯一標(biāo)識集合中所包含的用戶唯一標(biāo)識的數(shù)量,得到所述目標(biāo)服務(wù)器的日訪問用戶量。
可選地,若所述預(yù)設(shè)周期是一周,則所述統(tǒng)計(jì)所述用戶行為數(shù)據(jù)中包含的互不相同的所述用戶唯一標(biāo)識的數(shù)量,得到所述目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶訪問數(shù)量,包括:
查找所述預(yù)設(shè)周期內(nèi)每一天的用戶行為數(shù)據(jù)所包含的互不相同的用戶唯一標(biāo)識,獲得所述目標(biāo)服務(wù)器每一天的日訪問用戶集合,所述日訪問用戶集合包括所述用戶唯一標(biāo)識;
將所述預(yù)設(shè)周期中第二天對應(yīng)的所述日訪問用戶集合與所述預(yù)設(shè)周期中第一天對應(yīng)的所述日訪問用戶集合進(jìn)行合并,并去除合并后的日訪問用戶集合中重復(fù)的用戶唯一標(biāo)識,得到所述第二天對應(yīng)的累計(jì)日訪問用戶集合;
從所述預(yù)設(shè)周期中的第三天開始,將當(dāng)天對應(yīng)的所述日訪問用戶集合與前一天對應(yīng)的累計(jì)日訪問用戶集合進(jìn)行合并,并去除合并后的日訪問用戶集合中重復(fù)的用戶唯一標(biāo)識,得到所述當(dāng)天對應(yīng)的累計(jì)日訪問用戶集合,直到所述預(yù)設(shè)周期中的最后一天結(jié)束,計(jì)算得到所述目標(biāo)服務(wù)器的周訪問用戶量。
可選地,若所述預(yù)設(shè)周期為一個月,則所述統(tǒng)計(jì)所述用戶行為數(shù)據(jù)中包含的互不相同的所述用戶唯一標(biāo)識的數(shù)量,得到所述目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶訪問數(shù)量,包括:
根據(jù)所述預(yù)設(shè)周期內(nèi)的用戶行為數(shù)據(jù),獲得所述目標(biāo)服務(wù)器在所述預(yù)設(shè)周期內(nèi)每一周對應(yīng)的周訪問用戶集合,所述周訪問集合包含在一周內(nèi)訪問所述目標(biāo)服務(wù)器的全部互不相同的用戶唯一標(biāo)識;
將所述預(yù)設(shè)周期中第二周對應(yīng)的周訪問用戶集合與第一周對應(yīng)的周訪問用戶集合進(jìn)行合并,并去除合并后的周訪問用戶集合中重復(fù)的用戶唯一標(biāo)識,得到所述第二周對應(yīng)的累計(jì)周訪問用戶集合;
從所述預(yù)設(shè)周期中的第三周開始,將本周對應(yīng)的周訪問用戶集合與前一周對應(yīng)的累計(jì)周訪問用戶集合進(jìn)行合并,并去除合并后的周訪問用戶集合中重復(fù)的用戶唯一標(biāo)識,得到所述本周對應(yīng)的累計(jì)周訪問用戶集合,直到所述預(yù)設(shè)周期中的最后一個完整周,得到第四周對應(yīng)的累計(jì)周訪問用戶集合;
將所述預(yù)設(shè)周期內(nèi)不夠一個完整周的剩余天數(shù)對應(yīng)的日訪問用戶集合進(jìn)行合并,得到剩余累計(jì)日訪問用戶集合;
將所述剩余累計(jì)日訪問用戶集合與所述第四周對應(yīng)的累計(jì)周訪問用戶集合進(jìn)行合并,并去除合并后的訪問用戶集合中重復(fù)的用戶唯一標(biāo)識,得到所述預(yù)設(shè)周期對應(yīng)的月訪問用戶集合;
計(jì)算所述月訪問用戶集合中包含的用戶唯一標(biāo)識,得到所述預(yù)設(shè)周期的月訪問用戶量。
可選地,所述方法還包括:輸出所述目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶訪問數(shù)量。
第二方面,本申請還提供一種數(shù)據(jù)處理裝置,應(yīng)用于分布式存儲系統(tǒng)中,包括:
第一獲取單元,用于從所述分布式存儲系統(tǒng)中獲取目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶行為數(shù)據(jù);
第二獲取單元,用于獲取所述用戶行為數(shù)據(jù)所包含的用戶唯一標(biāo)識;
統(tǒng)計(jì)單元,用于統(tǒng)計(jì)所述用戶行為數(shù)據(jù)中包含的互不相同的所述用戶唯一標(biāo)識的數(shù)量,得到所述目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶訪問數(shù)量。
可選地,所述預(yù)設(shè)周期為一天,則所述統(tǒng)計(jì)單元,包括:
第一去重子單元,用于將一天內(nèi)所述用戶行為數(shù)據(jù)所包含的用戶唯一標(biāo)識,逐個進(jìn)行兩兩比較,去除重復(fù)的用戶唯一標(biāo)識,得到互不相同的用戶唯一標(biāo)識集合;
第一計(jì)算子單元,用于計(jì)算所述用戶唯一標(biāo)識集合中所包含的用戶唯一標(biāo)識的數(shù)量,得到所述目標(biāo)服務(wù)器的日訪問用戶量。
可選地,若所述預(yù)設(shè)周期是一周,則所述統(tǒng)計(jì)單元,包括:
第一獲取子單元,用于查找所述預(yù)設(shè)周期內(nèi)每一天的用戶行為數(shù)據(jù)所包含的互不相同的用戶唯一標(biāo)識,獲得所述目標(biāo)服務(wù)器每一天的日訪問用戶集合,所述日訪問用戶集合包括所述用戶唯一標(biāo)識;
第二去重子單元,用于將所述預(yù)設(shè)周期中第二天對應(yīng)的所述日訪問用戶集合與所述預(yù)設(shè)周期中第一天對應(yīng)的所述日訪問用戶集合進(jìn)行合并,并去除合并后的日訪問用戶集合中重復(fù)的用戶唯一標(biāo)識,得到所述第二天對應(yīng)的累計(jì)日訪問用戶集合;
第三去重子單元,用于從所述預(yù)設(shè)周期中的第三天開始,將當(dāng)天對應(yīng)的所述日訪問用戶集合與前一天對應(yīng)的累計(jì)日訪問用戶集合進(jìn)行合并,并去除合并后的日訪問用戶集合中重復(fù)的用戶唯一標(biāo)識,得到所述當(dāng)天對應(yīng)的累計(jì)日訪問用戶集合,直到所述預(yù)設(shè)周期中的最后一天結(jié)束;
第二計(jì)算子單元,用于計(jì)算得到所述目標(biāo)服務(wù)器的周訪問用戶量。
可選地,若所述預(yù)設(shè)周期為一個月,則所述統(tǒng)計(jì)單元,包括:
第二獲取子單元,用于根據(jù)所述預(yù)設(shè)周期內(nèi)的用戶行為數(shù)據(jù),獲得所述目標(biāo)服務(wù)器在所述預(yù)設(shè)周期內(nèi)每一周對應(yīng)的周訪問用戶集合,所述周訪問集合包含在一周內(nèi)訪問所述目標(biāo)服務(wù)器的全部互不相同的用戶唯一標(biāo)識;
第四去重子單元,用于將所述預(yù)設(shè)周期中第二周對應(yīng)的周訪問用戶集合與第一周對應(yīng)的周訪問用戶集合進(jìn)行合并,并去除合并后的周訪問用戶集合中重復(fù)的用戶唯一標(biāo)識,得到所述第二周對應(yīng)的累計(jì)周訪問用戶集合;
第五去重子單元,用于從所述預(yù)設(shè)周期中的第三周開始,將本周對應(yīng)的周訪問用戶集合與前一周對應(yīng)的累計(jì)周訪問用戶集合進(jìn)行合并,并去除合并后的周訪問用戶集合中重復(fù)的用戶唯一標(biāo)識,得到所述本周對應(yīng)的累計(jì)周訪問用戶集合,直到所述預(yù)設(shè)周期中的最后一個完整周,得到第四周對應(yīng)的累計(jì)周訪問用戶集合;
第六去重子單元,用于將所述預(yù)設(shè)周期內(nèi)不夠一個完整周的剩余天數(shù)對應(yīng)的日訪問用戶集合進(jìn)行合并,得到剩余累計(jì)日訪問用戶集合;
第七去重子單元,用于將所述剩余累計(jì)日訪問用戶集合與所述第四周對應(yīng)的累計(jì)周訪問用戶集合進(jìn)行合并,并去除合并后的訪問用戶集合中重復(fù)的用戶唯一標(biāo)識,得到所述預(yù)設(shè)周期對應(yīng)的月訪問用戶集合;
第三計(jì)算子單元,用于計(jì)算所述月訪問用戶集合中包含的用戶唯一標(biāo)識,得到所述預(yù)設(shè)周期的月訪問用戶量。
可選地,還包括:
輸出單元,用于輸出所述目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶訪問數(shù)量。
本發(fā)明實(shí)施例提供的數(shù)據(jù)處理方法,從分布式存儲系統(tǒng)中獲取目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶行為數(shù)據(jù);并獲取所述用戶行為數(shù)據(jù)所包含的用戶唯一標(biāo)識;然后,統(tǒng)計(jì)獲得的用戶行為數(shù)據(jù)所包含的互不相同的用戶唯一標(biāo)識的數(shù)量,得到目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶訪問數(shù)量,例如,預(yù)設(shè)周期內(nèi)訪問目標(biāo)服務(wù)器的用戶數(shù)量;利用該方法實(shí)現(xiàn)了對基于分布式存儲系統(tǒng)所存儲的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)和計(jì)算。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1示出了本申請實(shí)施例一種分布式數(shù)據(jù)處理系統(tǒng)架構(gòu)的框圖;
圖2示出了本申請實(shí)施例一種數(shù)據(jù)處理方法的流程圖;
圖3示出了本申請實(shí)施例另一種數(shù)據(jù)處理方法的流程圖;
圖4示出了本申請實(shí)施例又一種數(shù)據(jù)處理方法的流程圖;
圖5示出了本申請實(shí)施例再一種數(shù)據(jù)處理方法的流程圖;
圖6示出了本申請實(shí)施例一種數(shù)據(jù)處理裝置的框圖;
圖7示出了本申請實(shí)施例一種統(tǒng)計(jì)單元的框圖;
圖8示出了本申請實(shí)施例另一種統(tǒng)計(jì)單元的框圖;
圖9示出了本申請實(shí)施例又一種統(tǒng)計(jì)單元的框圖;
圖10示出了本申請實(shí)施例另一種數(shù)據(jù)處理裝置的框圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請參見圖1,示出了本申請實(shí)施例一種分布式數(shù)據(jù)處理系統(tǒng)架構(gòu)的框圖,該架構(gòu)包括:日志數(shù)據(jù)收集系統(tǒng)100、hadoop分布式文件系統(tǒng)(hadoopdistributedfilesystem,hdfs)200和數(shù)據(jù)計(jì)算系統(tǒng)300。
日志數(shù)據(jù)收集系統(tǒng)100可以由flume系統(tǒng)實(shí)現(xiàn),flume是分布式的日志收集系統(tǒng),它將各個服務(wù)器中的日志數(shù)據(jù)收集起來并送到指定的目的地,例如,hdfs。
在本申請實(shí)施例中,日志數(shù)據(jù)收集系統(tǒng)100用于收集用戶行為記錄日志,這些用戶行為記錄日志可以是每天應(yīng)用程序(application,app)、個人計(jì)算機(jī)(personalcomputer,pc)客戶端等平臺的用戶行為記錄。
flume的核心是把數(shù)據(jù)從數(shù)據(jù)輸入端收集起來,再將收集到的數(shù)據(jù)通過數(shù)據(jù)輸出端送到指定的目的地。flume將數(shù)據(jù)輸入端設(shè)置為用戶行為日志,將數(shù)據(jù)輸出端設(shè)置為hdfs,將讀取得到的日志文件轉(zhuǎn)換成指定的存儲形式存儲到hdfs中。hdfs每天分區(qū)域存儲接收到的用戶行為數(shù)據(jù)(或,稱為用戶行為日志)。
數(shù)據(jù)計(jì)算系統(tǒng)300可以通過mapreduce系統(tǒng)實(shí)現(xiàn),mapreduce系統(tǒng)主要包括mapper和reducer兩個抽象類。mapper端主要負(fù)責(zé)對數(shù)據(jù)進(jìn)行分析處理,最終轉(zhuǎn)化為key-value的數(shù)據(jù)結(jié)構(gòu);reducer端主要是獲取mapper出來的結(jié)果,對結(jié)果進(jìn)行統(tǒng)計(jì)。
本申請?zhí)峁┑臄?shù)據(jù)處理方法主要應(yīng)用于數(shù)據(jù)計(jì)算系統(tǒng)中,下面將詳細(xì)介紹數(shù)據(jù)處理方法的具體實(shí)施過程。
請參見圖2,示出了本申請實(shí)施例一種數(shù)據(jù)處理方法的流程圖,該方法應(yīng)用于圖1所示分布式系統(tǒng)中的數(shù)據(jù)計(jì)算系統(tǒng)300中。如圖2所示,該方法主要包括以下步驟:
s110,從分布式存儲系統(tǒng)中讀取目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶行為數(shù)據(jù)。
預(yù)設(shè)周期可以根據(jù)實(shí)際需求設(shè)定,例如,一天、一周、一個月等。
mapreduce中的map函數(shù)先從hdfs中讀取目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶行為數(shù)據(jù)。
目標(biāo)服務(wù)器即想要分析用戶行為數(shù)據(jù)的網(wǎng)站或應(yīng)用程序?qū)?yīng)的服務(wù)器,可以根據(jù)需求指定任意一個網(wǎng)站或應(yīng)用程序。指定目標(biāo)服務(wù)器后,需要配置圖1所示的分布式數(shù)據(jù)處理系統(tǒng)中的相應(yīng)參數(shù),例如,日志收集的數(shù)據(jù)輸入端。
s120,獲取用戶行為數(shù)據(jù)所包含的用戶唯一標(biāo)識。
map函數(shù)讀取用戶行為數(shù)據(jù)后,獲取該用戶行為數(shù)據(jù)所包含的用戶唯一標(biāo)識。例如,用戶唯一標(biāo)識可以是用戶在目標(biāo)服務(wù)器提供的平臺注冊的賬戶、或者,用戶所使用的終端設(shè)備的唯一標(biāo)識碼等能夠唯一標(biāo)識一個用戶的信息。
s130,統(tǒng)計(jì)用戶行為數(shù)據(jù)中包含的互不相同的所述用戶唯一標(biāo)識的數(shù)量,得到目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶訪問數(shù)量。
mapreduce中的reduce函數(shù)接收map函數(shù)返回的包含用戶唯一標(biāo)識的數(shù)據(jù),并對map函數(shù)返回的數(shù)據(jù)中的用戶唯一標(biāo)識進(jìn)行去重操作,即去除用戶行為數(shù)據(jù)中出現(xiàn)的重復(fù)的用戶唯一標(biāo)識,得到目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶訪問數(shù)量。
本實(shí)施例提供的數(shù)據(jù)處理方法,從分布式存儲系統(tǒng)中獲取目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶行為數(shù)據(jù);并獲取所述用戶行為數(shù)據(jù)所包含的用戶唯一標(biāo)識;然后,統(tǒng)計(jì)獲得的用戶行為數(shù)據(jù)所包含的互不相同的用戶唯一標(biāo)識的數(shù)量,得到目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶訪問數(shù)量,例如,預(yù)設(shè)周期內(nèi)訪問目標(biāo)服務(wù)器的用戶數(shù)量;利用該方法實(shí)現(xiàn)了對基于分布式存儲系統(tǒng)所存儲的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)和計(jì)算,而且,該方法操作簡單,運(yùn)算速度快。
請參見圖3,示出了本申請實(shí)施例另一種數(shù)據(jù)處理方法的流程圖,本實(shí)施例用于計(jì)算目標(biāo)服務(wù)器的日訪問用戶數(shù)量。如圖3所示,該方法可以包括以下步驟:
s210,從分布式存儲系統(tǒng)中讀取目標(biāo)服務(wù)器對應(yīng)的每天的用戶行為數(shù)據(jù)。
mapreduce中的map函數(shù)先從hdfs中讀取目標(biāo)服務(wù)器在一天內(nèi)的用戶行為數(shù)據(jù)。
s220,獲取每天的用戶行為數(shù)據(jù)所包含的用戶唯一標(biāo)識。
map函數(shù)從每天的用戶行為數(shù)據(jù)中獲取用戶唯一標(biāo)識,并返回給reduce函數(shù)。
s230,對于用戶行為數(shù)據(jù)所包含的用戶唯一標(biāo)識,去除重復(fù)的用戶唯一標(biāo)識,得到當(dāng)天的日訪問用戶集合。
reduce函數(shù)逐個比較一天內(nèi)的用戶行為數(shù)據(jù)所包含的用戶唯一標(biāo)識是否存在重復(fù)的用戶唯一標(biāo)識,若存在重復(fù)的用戶唯一標(biāo)識,則去除重復(fù)的用戶唯一標(biāo)識,即相同的用戶唯一標(biāo)識只保留一個。
實(shí)際過程中可能存在如下情況,某個用戶一天內(nèi)多次訪問目標(biāo)服務(wù)器,則用戶行為日志中會存在多條包含同一用戶唯一標(biāo)識的用戶訪問數(shù)據(jù);當(dāng)統(tǒng)計(jì)目標(biāo)服務(wù)器的日訪問用戶量(即統(tǒng)計(jì)每天訪問目標(biāo)服務(wù)器的不同用戶的總量)時,需要去除重復(fù)訪問的用戶量。例如,用戶a一天內(nèi)訪問了3次目標(biāo)服務(wù)器,統(tǒng)計(jì)日訪問用戶量時,用戶a的用戶數(shù)是1。
s240,計(jì)算所述日訪問用戶集合所包含的用戶唯一標(biāo)識的數(shù)量,得到目標(biāo)服務(wù)器的日訪問用戶量。
s230中得到的用戶唯一標(biāo)識集合中的用戶唯一標(biāo)識互不相同,因此,reduce函數(shù)統(tǒng)計(jì)該日訪問用戶集合中包含的用戶唯一標(biāo)識的數(shù)量即可得到當(dāng)天訪問目標(biāo)服務(wù)器的用戶數(shù)量。
本實(shí)施例提供的數(shù)據(jù)處理方法,從分布式存儲系統(tǒng)中讀取一天內(nèi)訪問目標(biāo)服務(wù)器的用戶行為數(shù)據(jù),并從用戶行為數(shù)據(jù)中獲取用戶唯一標(biāo)識,然后對用戶唯一標(biāo)識進(jìn)行去重,得到一天內(nèi)訪問目標(biāo)服務(wù)器的所有不同的用戶唯一標(biāo)識,最終得到該目標(biāo)服務(wù)器的日訪問用戶量。利用該方法可以實(shí)現(xiàn)對分布式存儲系統(tǒng)中的用戶數(shù)據(jù)的統(tǒng)計(jì)和計(jì)算,而且,該方法操作簡單,運(yùn)算速度快。
請參見圖4,示出了本申請實(shí)施例又一種數(shù)據(jù)處理方法的流程圖,本實(shí)施例用于計(jì)算目標(biāo)服務(wù)器在一周內(nèi)的訪問用戶數(shù)量,即,周訪問用戶量。如圖4所示,該方法可以包括以下步驟:
s310,從分布式存儲系統(tǒng)中讀取目標(biāo)服務(wù)器一周內(nèi)的用戶行為數(shù)據(jù)。
在本申請的一個實(shí)施例中,一周可以是星期一到星期日的自然周;在本申請的另一個實(shí)施例中,一周可以是連續(xù)的7天,并不限定為從星期一到星期日。
s320,獲取一周內(nèi)每一天的日訪問用戶集合。
reduce函數(shù)按照圖3所示的獲得日訪問用戶量的方式得到一周內(nèi)每一天的日訪問用戶集合,日訪問用戶集合包含一天內(nèi)訪問目標(biāo)服務(wù)器的所有互不相同的用戶對應(yīng)的用戶唯一標(biāo)識。
例如,用d1表示一周內(nèi)第一天的日訪問用戶集合,d2、d3、d4、d5、d6和d7分別表示一周內(nèi)第二天、第三天、第四天、第五天、第六天和第七天的日訪問用戶集合。需要說明的是,此處一周內(nèi)的第一天不一定是一個自然周的第一天。
s330,將d2與d1進(jìn)行合并、去重,得到第二天對應(yīng)的累計(jì)日訪問用戶集合r1。
如果某個用戶在第一天和第二天都訪問了目標(biāo)服務(wù)器,則在統(tǒng)計(jì)時只將該用戶統(tǒng)計(jì)一次。
reduce函數(shù)將d1和d2進(jìn)行合并,并去除d1和d2所包含的重復(fù)用戶唯一標(biāo)識,得到第二天對應(yīng)的累計(jì)日訪問用戶集合r1。例如,d1包括四個用戶分別是id1、id3、id4、id5;d2包括id1、id2、id4、id7這四個用戶,將d1與d2合并后得到的r1包括id1、id2、id3、id4、id5、id7這六個用戶。
s340,將d3與r1進(jìn)行合并、去重,得到第三天對應(yīng)的累計(jì)日訪問用戶集合r2。
d3與r1合并的過程與上述的d1、d2合并過程相同,刪除重復(fù)的用戶唯一標(biāo)識,得到前三天的累計(jì)訪問用戶集合r2。
s350,將d4與r2進(jìn)行合并、去重,得到第四天對應(yīng)的累計(jì)日訪問用戶集合r3。
r3表示一周內(nèi)前四天的累計(jì)訪問用戶集合。
s360,將d5與r3進(jìn)行合并、去重,得到第五天對應(yīng)的累計(jì)日訪問用戶集合r4。
r4表示一周內(nèi)前五天的累計(jì)訪問用戶集合。
s370,將d6與r4進(jìn)行合并、去重,得到第六天對應(yīng)的累計(jì)日訪問用戶集合r5。
r5表示一周內(nèi)前六天的累計(jì)訪問用戶集合。
s380,將d7與r5進(jìn)行合并、去重,得到第七天對應(yīng)的累計(jì)日訪問用戶集合r6。
r6表示一周內(nèi)七天的累計(jì)訪問用戶集合,即,周訪問用戶集合。
s390,統(tǒng)計(jì)r6內(nèi)包含的用戶唯一標(biāo)識,得到目標(biāo)服務(wù)器的周訪問用戶量。
由于r6即一周內(nèi)七天的累計(jì)訪問用戶集合,所以,只需要統(tǒng)計(jì)r6中所包含的用戶唯一標(biāo)識的數(shù)據(jù)即可得到本周訪問目標(biāo)服務(wù)器的不同用戶的數(shù)量。
本實(shí)施例提供的數(shù)據(jù)處理方法,能夠計(jì)算得到一周內(nèi)訪問目標(biāo)服務(wù)器的用戶數(shù)量。首先,獲取一周內(nèi)每一天對應(yīng)的日訪問用戶集合,并將第一天的日訪問用戶集合與第二天的日訪問用戶集合進(jìn)行合并、去重,得到前兩天的累計(jì)日訪問用戶集合;然后,從第三天開始將當(dāng)天的日訪問用戶集合與前一天對應(yīng)的累計(jì)日訪問用戶集合進(jìn)行合并、去重,得到該當(dāng)天對應(yīng)的累計(jì)日訪問用戶集合,直到本周的最后一天結(jié)束,得到本周的累計(jì)日訪問用戶集合。最后,統(tǒng)計(jì)本周的累計(jì)日訪問集合所包含的用戶唯一標(biāo)識的數(shù)量,得到周訪問用戶量。利用該方法可以實(shí)現(xiàn)對分布式存儲系統(tǒng)中的周訪問用戶數(shù)量的統(tǒng)計(jì)和計(jì)算,而且,該方法操作簡單,運(yùn)算速度快。
請參見圖5,示出了本申請實(shí)施例再一種數(shù)據(jù)處理方法的流程圖,本實(shí)施例中預(yù)設(shè)周期是一個月,如圖5所示,該方法可以包括以下步驟:
s410,從分布式存儲系統(tǒng)中獲取目標(biāo)服務(wù)器在一個月內(nèi)的用戶行為數(shù)據(jù)。
s420,獲取目標(biāo)服務(wù)器對應(yīng)的一個月內(nèi)每一周的周訪問用戶集合。
該周訪問用戶集合根據(jù)上述圖4所示的方法實(shí)施例獲得,此處不再贅述。
w1、w2、w3、w4分別表示一個月內(nèi)第一、第二、第三、第四周的周訪問用戶集合。
s430,將w1和w2進(jìn)行合并、去重,得到第二周對應(yīng)的累計(jì)周訪問用戶集合t1。
利用reduce函數(shù)將w1和w2進(jìn)行合并,并去除合并后的周訪問用戶集合所包含的重復(fù)的用戶唯一標(biāo)識,得到前兩周訪問目標(biāo)服務(wù)器的累計(jì)周訪問用戶集合t1。
s440,將w3與t1進(jìn)行合并、去重,得到第三周對應(yīng)的累計(jì)周訪問用戶集合t2。
t2表示前三周訪問目標(biāo)服務(wù)器的累計(jì)周訪問用戶集合。
s450,w4與t2進(jìn)行合并、去重,得到第四周對應(yīng)的累計(jì)周訪問用戶集合t3。
t3表示前四周訪問目標(biāo)服務(wù)器的累計(jì)周訪問用戶集合。
s460,將一個月內(nèi)除四個完整周后剩余的天數(shù)對應(yīng)的日訪問用戶集合進(jìn)行合并、去重,得到剩余累計(jì)日訪問用戶集合。
例如,一個月有30天包括4個完整周還剩余2天,此步驟是將剩余的2天對應(yīng)的日訪問用戶集合進(jìn)行合并、去重,得到剩余累計(jì)日訪問用戶集合r1。
s470,將r1與t3進(jìn)行合并、去重,得到月訪問用戶集合y1。
s480,統(tǒng)計(jì)月訪問用戶集合所包含的用戶唯一標(biāo)識,得到月訪問用戶量。
統(tǒng)計(jì)y1所包含的用戶唯一標(biāo)識的數(shù)量,得到月訪問用戶量。
本實(shí)施例提供的數(shù)據(jù)處理方法,能夠計(jì)算一個月內(nèi)訪問目標(biāo)服務(wù)器的累計(jì)用戶數(shù)量。首先,獲取一個月內(nèi)每個完整周對應(yīng)的周訪問用戶集合;然后,將第一周與第二周的周訪問用戶集合進(jìn)行合并、去重,得到前兩周的累計(jì)周訪問用戶集合;將第三周的周訪問用戶集合與前兩周累計(jì)周訪問用戶集合進(jìn)行合并、去重,得到一個月的累計(jì)訪問用戶集合,最后,統(tǒng)計(jì)該累計(jì)訪問用戶集合所包含的用戶唯一標(biāo)識即可計(jì)算得到一個月內(nèi)的累計(jì)訪問用戶數(shù)量。利用該方法可以實(shí)現(xiàn)對分布式存儲系統(tǒng)中的周訪問用戶數(shù)量的統(tǒng)計(jì)和計(jì)算,而且,該方法操作簡單,運(yùn)算速度快。
對于前述的各方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
請參見圖6,示出了本申請實(shí)施例一種數(shù)據(jù)處理裝置的框圖,該裝置應(yīng)用于分布式存儲系統(tǒng)中,如圖6所示,該裝置包括:第一獲取單元110、第二獲取單元120和統(tǒng)計(jì)單元130。
第一獲取單元110,用于從分布式存儲系統(tǒng)中讀取目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶行為數(shù)據(jù)。
預(yù)設(shè)周期可以根據(jù)實(shí)際需求設(shè)定,例如,一天、一周、一個月等。用戶行為數(shù)據(jù)即用戶訪問目標(biāo)服務(wù)器所產(chǎn)生的日志文件,
目標(biāo)服務(wù)器即想要分析用戶行為數(shù)據(jù)的網(wǎng)站或應(yīng)用程序?qū)?yīng)的服務(wù)器,可以根據(jù)需求指定任意一個網(wǎng)站或應(yīng)用程序。指定目標(biāo)服務(wù)器后,需要配置圖1所示的分布式數(shù)據(jù)處理系統(tǒng)中的相應(yīng)參數(shù),例如,日志收集的數(shù)據(jù)輸入端。
第二獲取單元120,用于獲取用戶行為數(shù)據(jù)所包含的用戶唯一標(biāo)識。
map函數(shù)讀取用戶行為數(shù)據(jù)后,獲取該用戶行為數(shù)據(jù)所包含的用戶唯一標(biāo)識。
統(tǒng)計(jì)單元130,用于統(tǒng)計(jì)用戶行為數(shù)據(jù)中包含的互不相同的用戶唯一標(biāo)識的數(shù)量,得到目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶訪問數(shù)量。
mapreduce中的reduce函數(shù)接收map函數(shù)返回的包含用戶唯一標(biāo)識的數(shù)據(jù),并對map函數(shù)返回的數(shù)據(jù)中的用戶唯一標(biāo)識進(jìn)行去重操作,即去除用戶行為數(shù)據(jù)中出現(xiàn)的重復(fù)的用戶唯一標(biāo)識,得到目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶訪問數(shù)量。
在本申請的一個實(shí)施例中預(yù)設(shè)周期為一天,如圖7所示,統(tǒng)計(jì)單元130包括:第一去重子單元1311和第一計(jì)算子單元1312。
第一去重子單元1311,用于將一天內(nèi)用戶行為數(shù)據(jù)所包含的用戶唯一標(biāo)識進(jìn)行去重,得到互不相同的用戶唯一標(biāo)識集合。
第一計(jì)算子單元1312,用于計(jì)算用戶唯一標(biāo)識集合中所包含的用戶唯一標(biāo)識的數(shù)量,得到所述目標(biāo)服務(wù)器的日訪問用戶量。
在本申請的另一個實(shí)施例中,所述預(yù)設(shè)周期是一周,如圖8所示,統(tǒng)計(jì)單元130包括:第一獲取子單元1321、第二去重子單元1322、第三去重子單元1323和第二計(jì)算子單元1324。
第一獲取子單元1321,用于查找一周內(nèi)每一天的用戶行為數(shù)據(jù)所包含的互不相同的用戶唯一標(biāo)識,獲得目標(biāo)服務(wù)器每一天的日訪問用戶集合;
日訪問用戶集合包括一天內(nèi)訪問目標(biāo)服務(wù)器的所有不同用戶的用戶唯一標(biāo)識。第一獲取子單元用于獲取一周內(nèi)第一天訪問目標(biāo)服務(wù)器的日訪問用戶集合。
第二去重子單元1322,用于將一周內(nèi)第二天對應(yīng)的所述日訪問用戶集合與所述預(yù)設(shè)周期中第一天對應(yīng)的日訪問用戶集合進(jìn)行合并、去重,得到所述第二天對應(yīng)的累計(jì)日訪問用戶集合。
第二天的累計(jì)日訪問用戶集合是一周內(nèi)前兩天訪問目標(biāo)服務(wù)器的所有不同用戶的集合。
第三去重子單元1323,用于從一周內(nèi)的第三天開始,將當(dāng)天對應(yīng)的日訪問用戶集合與前一天對應(yīng)的累計(jì)日訪問用戶集合進(jìn)行合并、去重,得到所述當(dāng)天對應(yīng)的累計(jì)日訪問用戶集合,直到所述預(yù)設(shè)周期中的最后一天結(jié)束,得到本周的周訪問用戶集合;
從一周的第三天開始,將當(dāng)天的日訪問用戶集合與本周內(nèi)當(dāng)天之前的累計(jì)日訪問用戶集合進(jìn)行合并、去重,直到本周的最后一天結(jié)束,得到本周的周訪問用戶集合。
第二計(jì)算子單元1324,用于計(jì)算周訪問用戶集合所包含的用戶標(biāo)識的數(shù)量,得到所述目標(biāo)服務(wù)器的周訪問用戶量。
在本申請的又一個實(shí)施例中,預(yù)設(shè)周期為一個月,如圖9所示,統(tǒng)計(jì)單元130包括:第二獲取子單元1331、第四去重子單元1332、第五去重子單元1333、第六去重子單元1334、第七去重子單元1335和第三計(jì)算子單元1336。
第二獲取子單元1331,用于根據(jù)一個月內(nèi)的用戶行為數(shù)據(jù),獲得目標(biāo)服務(wù)器在本月內(nèi)每一周對應(yīng)的周訪問用戶集合;
所述周訪問集合包含在一周內(nèi)訪問目標(biāo)服務(wù)器的全部互不相同的用戶對應(yīng)的用戶唯一標(biāo)識。
第四去重子單元1332,用于將本月內(nèi)中第二周的周訪問用戶集合與第一周的周訪問用戶集合進(jìn)行合并、去重,得到第二周對應(yīng)的累計(jì)周訪問用戶集合。
第二周對應(yīng)的累計(jì)周訪問用戶集合,即本月內(nèi)前兩周的累計(jì)訪問用戶集合。
第五去重子單元1333,用于從本月的第三周開始,將本周的周訪問用戶集合與前一周對應(yīng)的累計(jì)周訪問用戶集合進(jìn)行合并、去重,得到所述本周對應(yīng)的累計(jì)周訪問用戶集合,直到本月的最后一個完整周,得到第四周對應(yīng)的累計(jì)周訪問用戶集合。
第六去重子單元1334,用于將所述預(yù)設(shè)周期內(nèi)不夠一個完整周的剩余天數(shù)對應(yīng)的日訪問用戶集合進(jìn)行合并,得到剩余累計(jì)日訪問用戶集合;
一個月有30天包括4個完整周還剩余2天,該第六去重子單元是將剩余的2天對應(yīng)的日訪問用戶集合進(jìn)行合并、去重,得到剩余累計(jì)日訪問用戶集合r1。
第七去重子單元1335,用于將所述剩余累計(jì)日訪問用戶集合與第四周對應(yīng)的累計(jì)周訪問用戶集合進(jìn)行合并、去重,得到本月對應(yīng)的月訪問用戶集合。
第三計(jì)算子單元1336,用于計(jì)算所述月訪問用戶集合中包含的用戶唯一標(biāo)識,得到本月的月訪問用戶量。
本實(shí)施例提供的數(shù)據(jù)處理裝置,從分布式存儲系統(tǒng)中獲取目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶行為數(shù)據(jù);并獲取所述用戶行為數(shù)據(jù)所包含的用戶唯一標(biāo)識;然后,統(tǒng)計(jì)獲得的用戶行為數(shù)據(jù)所包含的互不相同的用戶唯一標(biāo)識的數(shù)量,得到目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶訪問數(shù)量,例如,預(yù)設(shè)周期內(nèi)訪問目標(biāo)服務(wù)器的用戶數(shù)量;利用該裝置實(shí)現(xiàn)了對基于分布式存儲系統(tǒng)所存儲的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)和計(jì)算,而且,該裝置操作簡單,運(yùn)算速度快。
請參見圖10,示出了本申請實(shí)施例另一種數(shù)據(jù)處理裝置的框圖,該裝置應(yīng)用于分布式存儲系統(tǒng)中,該裝置在圖6所示實(shí)施例的基礎(chǔ)上還包括輸出單元210。
輸出單元210,用于輸出目標(biāo)服務(wù)器在預(yù)設(shè)周期內(nèi)的用戶訪問數(shù)量。
當(dāng)統(tǒng)計(jì)單元130統(tǒng)計(jì)得到預(yù)設(shè)周期內(nèi)的用戶訪問數(shù)量后,可以通過輸出單元輸出到某一結(jié)果目錄下,以供需要時讀取該結(jié)果目錄下的用戶訪問數(shù)量結(jié)果。
本實(shí)施提供的數(shù)據(jù)處理裝置,得到預(yù)設(shè)周期內(nèi)訪問目標(biāo)服務(wù)器的用戶訪問數(shù)量后,通過輸出單元輸出到設(shè)定的結(jié)果目錄下,當(dāng)接收到獲取該預(yù)設(shè)周期內(nèi)用戶訪問數(shù)量的請求后,從該結(jié)果目錄下讀取對應(yīng)的用戶訪問數(shù)量即可。操作方便,請求響應(yīng)速度快。
需要說明的是,本說明書中的各個實(shí)施例均采用遞進(jìn)的方式描述,每個實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個實(shí)施例之間相同相似的部分互相參見即可。對于裝置類實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實(shí)體或者操作與另一個實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
對所公開的實(shí)施例的上述說明,使本領(lǐng)域技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實(shí)施例的多種修改對本領(lǐng)域技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。