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