中文字幕无码日韩视频无码三区

一種從海量數據中高效計算多個維度用戶數的方法與流程

文檔序(xu)號:11134020閱讀:743來源:國知局
一種從海量數據中高效計算多個維度用戶數的方法與制造工藝

本發(fa)明涉及一種數(shu)據(ju)處理方法,特別是涉及一種對海量數(shu)據(ju)中特定類型(xing)數(shu)據(ju)的(de)處理方法。



背景技術:

在(zai)競爭與機遇并(bing)(bing)存的數(shu)字(zi)化(hua)信息時(shi)(shi)(shi)(shi)代(dai),數(shu)據(ju)的分析(xi)與統計(ji)以決策支撐的身份出(chu)現在(zai)經濟(ji)、管理、規劃和(he)投資等許多相關領域。作(zuo)為為企業經營部門和(he)決策層提(ti)供重(zhong)要(yao)決策依據(ju)的技術手(shou)段,需要(yao)完成對反(fan)(fan)應(ying)和(he)影響企業發(fa)展的重(zhong)要(yao)數(shu)據(ju)進行實時(shi)(shi)(shi)(shi)收(shou)集、分析(xi),并(bing)(bing)及時(shi)(shi)(shi)(shi)形成關鍵信息并(bing)(bing)反(fan)(fan)饋的處理過程,在(zai)滿(man)足時(shi)(shi)(shi)(shi)效性的前提(ti)下,客(ke)觀地反(fan)(fan)應(ying)業務發(fa)展狀(zhuang)況。

例如對經營性(xing)企業(ye)(ye)來說(shuo),用戶數(shu)指標是反映(ying)業(ye)(ye)務發展的一(yi)項(xiang)關鍵指標。

在(zai)用戶業(ye)務(wu)量不斷(duan)增(zeng)長的(de)情況下,海量數(shu)據(ju)環境下如(ru)何快速計(ji)(ji)算出用戶數(shu),已(yi)經成(cheng)為數(shu)據(ju)分析系(xi)統亟待解決(jue)(jue)的(de)業(ye)務(wu)需求(qiu)。在(zai)面對每天產(chan)生的(de)上億條用戶使用日(ri)志進行海量數(shu)據(ju)統計(ji)(ji)處理的(de)計(ji)(ji)算中,用戶數(shu)的(de)快速讀取計(ji)(ji)算是一個急需解決(jue)(jue)的(de)技術(shu)難(nan)題。

目前,計算海量數(shu)(shu)據(ju)(ju)的現有技術通常采用的方(fang)法是進(jin)行一(yi)次對一(yi)種維度(即某(mou)一(yi)個計算指(zhi)標或參數(shu)(shu),例如日(ri)期、業務類型、用戶(hu)(hu)(hu)類型等(deng))的統(tong)計需(xu)求,就(jiu)要對全(quan)部數(shu)(shu)據(ju)(ju)進(jin)行一(yi)次掃描計算,具體方(fang)法包括分組、去重(zhong)、求和的過程。用戶(hu)(hu)(hu)數(shu)(shu)的計算過程是首先(xian)要在全(quan)部數(shu)(shu)據(ju)(ju)中排(pai)除(chu)重(zhong)復(fu)用戶(hu)(hu)(hu)的標識,然后計算去重(zhong)后的用戶(hu)(hu)(hu)數(shu)(shu)量。

當增加統(tong)計(ji)維度時,還需要重(zhong)新進行去重(zhong)操作與重(zhong)復計(ji)算(suan)(suan),其計(ji)算(suan)(suan)量(liang)非常巨大和耗(hao)時。例如:針對(dui)(dui)(dui)一天的(de)日(ri)志數(shu)據分別計(ji)算(suan)(suan)網絡類(lei)(lei)型(xing)(xing)和業務類(lei)(lei)型(xing)(xing)的(de)用戶(hu)(hu)數(shu)時,按照現有技術的(de)方法,需要掃描兩次(ci)日(ri)志文(wen)件(jian)數(shu)據源:第(di)一次(ci)計(ji)算(suan)(suan)網絡類(lei)(lei)型(xing)(xing)的(de)用戶(hu)(hu)對(dui)(dui)(dui)象的(de)數(shu)量(liang),第(di)二次(ci)計(ji)算(suan)(suan)業務類(lei)(lei)型(xing)(xing)的(de)用戶(hu)(hu)對(dui)(dui)(dui)象數(shu)量(liang)。

當(dang)需(xu)要以上兩(liang)種類型(兩(liang)個維度)的(de)組合用戶數時,還(huan)需(xu)要重新進(jin)行一(yi)次(ci)掃(sao)(sao)描和計算,而(er)每一(yi)次(ci)的(de)掃(sao)(sao)描與統(tong)計計算因為(wei)涉及海(hai)量(liang)的(de)數據對象,都會占(zhan)用大(da)量(liang)的(de)計算機資(zi)源。每一(yi)次(ci)對數據源(通常(chang)是存(cun)(cun)儲(chu)在數據庫(ku)中的(de)日志數據)的(de)掃(sao)(sao)描,需(xu)要調用高級(ji)數據接(jie)口、處理(li)復雜數據對象,往往要對數據庫(ku)引擎、處理(li)器和磁盤系統(tong)、內存(cun)(cun)系統(tong)造成較大(da)壓(ya)力,海(hai)量(liang)數據的(de)掃(sao)(sao)描周期較長(chang)也不利于保證時效性(xing)。

如何快速(su)完成多維(wei)度用(yong)戶(hu)數據的(de)掃描(miao)計(ji)(ji)算形成多維(wei)度數據分(fen)(fen)析結果,這(zhe)一計(ji)(ji)算機數值(zhi)分(fen)(fen)析與統計(ji)(ji)領(ling)域的(de)技術問題,往(wang)往(wang)涉(she)及以下技術難點:

如何定位(wei)數據(ju)(ju)源中的(de)(de)某一維(wei)度的(de)(de)數據(ju)(ju),在去重(zhong)的(de)(de)同(tong)時保(bao)(bao)證(zheng)數據(ju)(ju)的(de)(de)離散化和可(ke)檢索(suo)。這是保(bao)(bao)證(zheng)減(jian)少完整掃描(miao)次(ci)數和滿足數據(ju)(ju)掃描(miao)結果(guo)積累更新的(de)(de)關鍵(jian)。

如(ru)何形成(cheng)對海量(liang)數(shu)據的(de)高效中間運(yun)(yun)算,盡量(liang)運(yun)(yun)用(yong)低級運(yun)(yun)算方式和方法,避免(mian)高級數(shu)據對象運(yun)(yun)算形成(cheng)的(de)高TPS(每秒處理事務數(shu))消耗(hao)。



技術實現要素:

有鑒于(yu)此(ci),本發明實(shi)施(shi)例提供了一種(zhong)從海量數(shu)(shu)據(ju)中進行(xing)維度數(shu)(shu)據(ju)快速(su)定位的(de)方法,用于(yu)解決海量數(shu)(shu)據(ju)掃描過程(cheng)數(shu)(shu)據(ju)離(li)散(san)化程(cheng)度低(di),數(shu)(shu)據(ju)無法有效(xiao)定位,導致數(shu)(shu)據(ju)分析效(xiao)率低(di)下的(de)技術問(wen)題。

本發明的(de)一種從(cong)海量數(shu)據(ju)中高效計算多個維度用戶數(shu)的(de)方法,包括以(yi)下步驟:

掃描數(shu)據源(yuan),利(li)用(yong)位置(zhi)標識定位單一維度(du)下的用(yong)戶位置(zhi)信息,形成用(yong)戶分布數(shu)據;

根據用戶分布數據形(xing)成可(ke)存儲的維(wei)度用戶數據;

在可存儲的維度(du)用戶數據間,通過布爾運算(suan)形成多維數據分析(xi)結果。

所(suo)述(shu)位置標識的(de)形成(cheng)過程包括:

通(tong)過建立用(yong)戶(hu)標識鍵值結構,形成用(yong)戶(hu)的位置標識。

所(suo)述位(wei)置標(biao)識的(de)形成過程包括(kuo):

獲取(qu)數據源中的用戶(hu)信息,提(ti)取(qu)用戶(hu)標識;

為每一用(yong)戶分配唯一的數字標(biao)識(shi)(shi)(shi),形(xing)成用(yong)戶標(biao)識(shi)(shi)(shi)和(he)數字標(biao)識(shi)(shi)(shi)的鍵值(zhi)對數據;

利用鍵(jian)值對數據建立可(ke)讀(du)入內存的用戶鍵(jian)值對結構數據。

所述用戶分布數據的形成(cheng)過程包(bao)括:

分段掃描數據(ju)(ju)源,提取數據(ju)(ju)源中單一維(wei)度的用戶數據(ju)(ju)中的用戶信息,形成相應的用戶標識(shi);

用(yong)戶(hu)標識與(yu)內存中(zhong)的(de)用(yong)戶(hu)鍵值對結構數據比較(jiao),形成去重的(de)用(yong)戶(hu)的(de)相應鍵值對數據;

將相(xiang)應用戶鍵值對數(shu)據形成線性結構數(shu)據;

利用(yong)線(xian)性結構數(shu)據中的值(zhi)(zhi)定位內存(cun)中的存(cun)儲位,利用(yong)鍵作為賦(fu)值(zhi)(zhi)依據,賦(fu)值(zhi)(zhi),形(xing)成二維空間(jian)中的用(yong)戶分布數(shu)據。

所述線(xian)性結構數據采用鏈表(biao)結構。

所述(shu)維度用戶數據(ju)的形成(cheng)過程(cheng)包括:

通過數據容(rong)器建立可(ke)存儲(chu)的數據環境;

根據用戶分(fen)布(bu)數據中的(de)位置數據確定存儲(chu)范圍;

根據(ju)(ju)(ju)用戶(hu)分布數(shu)據(ju)(ju)(ju)中的位置數(shu)據(ju)(ju)(ju)在數(shu)據(ju)(ju)(ju)容(rong)器的相應位賦值(zhi),在數(shu)據(ju)(ju)(ju)容(rong)器的其他位填(tian)充;

將數(shu)據容(rong)器中(zhong)的(de)內(nei)容(rong)形(xing)成磁盤文(wen)件(jian),作為(wei)單一維度(du)的(de)用戶的(de)位(wei)置的(de)數(shu)據文(wen)件(jian)。

所述多維(wei)數據分析(xi)過程包括:

利用(yong)數據容器獲取不同單一維度的(de)用(yong)戶的(de)位(wei)置的(de)數據文件;

在數據容(rong)器中(zhong)對(dui)各數據文件的(de)相(xiang)(xiang)應位進行布爾運算,形(xing)成(cheng)布爾運算的(de)結(jie)果序(xu)列,計數結(jie)果序(xu)列中(zhong)的(de)標識(shi)值(zhi),形(xing)成(cheng)相(xiang)(xiang)應維度的(de)用戶數信息。

所述用(yong)戶(hu)(hu)(hu)標識與(yu)內(nei)存中的用(yong)戶(hu)(hu)(hu)鍵(jian)值(zhi)對結構(gou)數(shu)據比較,形(xing)成(cheng)去重的用(yong)戶(hu)(hu)(hu)的相應鍵(jian)值(zhi)對數(shu)據替換為用(yong)戶(hu)(hu)(hu)標識與(yu)內(nei)存中的用(yong)戶(hu)(hu)(hu)鍵(jian)值(zhi)對結構(gou)數(shu)據比較,形(xing)成(cheng)重復的用(yong)戶(hu)(hu)(hu)的相應鍵(jian)值(zhi)對數(shu)據;

所述線性結(jie)構數據(ju)采(cai)用(yong)隊(dui)列結(jie)構。

所述根(gen)據(ju)用戶分布數(shu)(shu)據(ju)中(zhong)的位置數(shu)(shu)據(ju)在數(shu)(shu)據(ju)容器的相應(ying)位賦(fu)值(zhi),包括:

在賦值(zhi)前與相應(ying)位(wei)進行(xing)或運算(suan)。

所(suo)述建立用(yong)戶標識鍵值結構采用(yong)Hash算法;

所(suo)述形成可存(cun)儲的(de)維度用戶數據采用BLOB容器(qi)。

本(ben)發明(ming)的(de)從海(hai)量(liang)數據(ju)(ju)中進行維度數據(ju)(ju)快速定(ding)位(wei)(wei)(wei)的(de)方法,利(li)(li)(li)用(yong)(yong)(yong)數值(zhi)的(de)離散(san)性(xing)(xing),將與用(yong)(yong)(yong)戶對(dui)應(ying)的(de)連(lian)續數值(zhi)形(xing)成相關(guan)的(de)位(wei)(wei)(wei)置(zhi)(zhi)(zhi)標(biao)識(shi)作為(wei)坐標(biao),將位(wei)(wei)(wei)置(zhi)(zhi)(zhi)標(biao)識(shi)映射為(wei)二維空間(jian)(jian)中的(de)位(wei)(wei)(wei)置(zhi)(zhi)(zhi)和(he)距(ju)(ju)離,并利(li)(li)(li)用(yong)(yong)(yong)內(nei)存(cun)地址的(de)連(lian)續性(xing)(xing)確定(ding)相應(ying)的(de)位(wei)(wei)(wei)置(zhi)(zhi)(zhi)和(he)距(ju)(ju)離,在(zai)線性(xing)(xing)位(wei)(wei)(wei)置(zhi)(zhi)(zhi)的(de)內(nei)存(cun)對(dui)象賦值(zhi),形(xing)成可測量(liang)和(he)存(cun)儲(chu)的(de)分(fen)(fen)布信(xin)息(xi),利(li)(li)(li)用(yong)(yong)(yong)布爾運(yun)算(suan)形(xing)成相應(ying)維度類型的(de)用(yong)(yong)(yong)戶信(xin)息(xi)。解決了維度數據(ju)(ju)處(chu)理無(wu)法利(li)(li)(li)用(yong)(yong)(yong)高效運(yun)算(suan)方式造成處(chu)理結果時效性(xing)(xing)差和(he)系(xi)統(tong)負(fu)荷無(wu)法降低的(de)技(ji)術問(wen)題。利(li)(li)(li)用(yong)(yong)(yong)用(yong)(yong)(yong)戶與離散(san)數值(zhi)間(jian)(jian)建立(li)(li)的(de)位(wei)(wei)(wei)置(zhi)(zhi)(zhi)標(biao)識(shi),在(zai)內(nei)存(cun)空間(jian)(jian)中建立(li)(li)位(wei)(wei)(wei)置(zhi)(zhi)(zhi)關(guan)聯,將映射的(de)用(yong)(yong)(yong)戶信(xin)息(xi)以位(wei)(wei)(wei)置(zhi)(zhi)(zhi)信(xin)息(xi)存(cun)儲(chu),充分(fen)(fen)利(li)(li)(li)用(yong)(yong)(yong)內(nei)存(cun)環境的(de)尋址性(xing)(xing)能和(he)處(chu)理器(qi)低級運(yun)算(suan)的(de)絕對(dui)優勢,將海(hai)量(liang)數據(ju)(ju)中的(de)維度用(yong)(yong)(yong)戶數據(ju)(ju)分(fen)(fen)析的(de)運(yun)算(suan)周期大(da)大(da)縮短。

附圖說明

圖(tu)1a為本發(fa)明(ming)從(cong)海量數據中高(gao)效計算(suan)多個維度用戶數的方法一實(shi)施例的流程(cheng)圖(tu);

圖1b為本發明從海量(liang)數(shu)據(ju)中(zhong)高(gao)效計算多個維度用戶數(shu)的方法一實施例的預(yu)置流程(cheng)圖;

圖(tu)2為本發(fa)明從海量數據(ju)中高效計算多個維度用(yong)戶數的方法一實施例的位置標(biao)識(shi)的形(xing)成(cheng)流程圖(tu);

圖3為(wei)本發明從海量數(shu)據(ju)中高效計算(suan)多個維度用(yong)戶數(shu)的方法一(yi)實施例的用(yong)戶分布的形(xing)成流程圖;

圖(tu)4為本發明從海量數(shu)據中高(gao)效計算(suan)多個維度(du)用戶(hu)數(shu)的(de)(de)方法一(yi)實(shi)施例的(de)(de)維度(du)數(shu)據的(de)(de)形成流程圖(tu);

圖(tu)5為本(ben)發(fa)明從海量數據中高效計算多個維度用戶(hu)(hu)數的(de)方法(fa)一實(shi)施例的(de)多維度用戶(hu)(hu)分析的(de)形(xing)成流程圖(tu);

圖6為(wei)本發(fa)明(ming)從海量數(shu)據(ju)中高效計算多個維(wei)度用(yong)戶數(shu)的方法(fa)一(yi)實施例形成(cheng)維(wei)度用(yong)戶數(shu)據(ju)的過(guo)程示意(yi)圖。

具體實施方式

下面將(jiang)結合本(ben)發(fa)(fa)明(ming)實(shi)施(shi)例(li)(li)中的附圖,對本(ben)發(fa)(fa)明(ming)實(shi)施(shi)例(li)(li)中的技(ji)(ji)術方案進(jin)行(xing)清(qing)楚(chu)、完整地描述,顯然,所描述的實(shi)施(shi)例(li)(li)僅(jin)是(shi)本(ben)發(fa)(fa)明(ming)一(yi)部分(fen)實(shi)施(shi)例(li)(li),而不(bu)是(shi)全(quan)部的實(shi)施(shi)例(li)(li)。基于本(ben)發(fa)(fa)明(ming)中的實(shi)施(shi)例(li)(li),本(ben)領域普通技(ji)(ji)術人員(yuan)在沒(mei)有作(zuo)出(chu)創造性勞動(dong)前提下所獲得(de)的所有其他實(shi)施(shi)例(li)(li),都屬于本(ben)發(fa)(fa)明(ming)保(bao)護的范(fan)圍(wei)。

圖紙中的步驟編號僅(jin)用(yong)于作(zuo)為該步驟的附圖標記,不表示執行順(shun)序。

本發(fa)明的(de)(de)從海量數據中高效計(ji)算多個維度(du)用(yong)戶(hu)(hu)數的(de)(de)方(fang)法,利用(yong)數的(de)(de)離(li)散(san)性,將(jiang)與用(yong)戶(hu)(hu)對應(ying)(ying)的(de)(de)連續數值形成相關的(de)(de)位(wei)(wei)置標識,將(jiang)位(wei)(wei)置標識映射(she)為二維空間中的(de)(de)位(wei)(wei)置和(he)距離(li),并利用(yong)內存地址的(de)(de)連續性確定相應(ying)(ying)的(de)(de)位(wei)(wei)置和(he)距離(li),利用(yong)布爾運算形成相應(ying)(ying)維度(du)類型的(de)(de)用(yong)戶(hu)(hu)信(xin)息。

圖1a為本發明一實施例(li)的(de)從海量數(shu)據中(zhong)高效(xiao)計算(suan)多(duo)個維度用(yong)戶(hu)(hu)數(shu)的(de)方法的(de)流程(cheng)圖,為形成多(duo)維度用(yong)戶(hu)(hu)信息的(de)過程(cheng)。如圖1a所示,該方法包括:

步(bu)驟02:掃描(miao)數(shu)據(ju)源,利用(yong)位置標識定位單一維度(du)下的用(yong)戶(hu)位置信息,形(xing)成用(yong)戶(hu)分布(bu)數(shu)據(ju);

步驟03:根據(ju)用(yong)戶分布數(shu)據(ju)形成可存(cun)儲(chu)的維度(du)用(yong)戶數(shu)據(ju);

步驟04:在可存儲(chu)的(de)維度(du)用戶數(shu)據(ju)間,通(tong)過(guo)布爾運(yun)算形(xing)成多(duo)維數(shu)據(ju)分析結(jie)果。

本實施(shi)例的(de)從(cong)海量數(shu)(shu)據中高效計算(suan)(suan)多個維(wei)度用(yong)戶(hu)數(shu)(shu)的(de)方(fang)法,利用(yong)用(yong)戶(hu)與離散數(shu)(shu)值間建立的(de)位置(zhi)標識(shi),在內存空間中建立位置(zhi)關(guan)聯,將(jiang)映(ying)射(she)的(de)用(yong)戶(hu)信息(xi)以位置(zhi)信息(xi)存儲,充分利用(yong)內存環境的(de)尋址性能(neng)和處理(li)器低(di)級運算(suan)(suan)的(de)絕對優勢,將(jiang)海量數(shu)(shu)據中的(de)維(wei)度用(yong)戶(hu)數(shu)(shu)據分析的(de)運算(suan)(suan)周期大大縮短。在復雜的(de)多維(wei)度用(yong)戶(hu)數(shu)(shu)的(de)處理(li)過程(cheng)中,可以將(jiang)數(shu)(shu)據源掃描頻(pin)率降(jiang)低(di)、分析過程(cheng)簡化,處理(li)速(su)度可以提高一至兩個量級。

圖(tu)1b為本發明(ming)一(yi)實施例的(de)從海量數據中高(gao)效計算多個維度(du)用戶數的(de)方(fang)法的(de)預置(zhi)流程圖(tu),提(ti)供(gong)了一(yi)種形成位置(zhi)標識的(de)過程,如圖(tu)1b所示,該(gai)方(fang)法包括(kuo):

步驟01:建立用(yong)戶(hu)標(biao)識鍵值結構,形成用(yong)戶(hu)的位置標(biao)識。

步驟01作為利用(yong)位置(zhi)標(biao)識進行數據處理(li)前(qian)的(de)獨立的(de)數據處理(li)過程。

本實(shi)施例的從海量數據中高(gao)效計算(suan)多(duo)個維(wei)度用戶(hu)(hu)數的方法,利用數值的離(li)(li)散性,將離(li)(li)散用戶(hu)(hu)與連續數值關(guan)聯形成位置標識,連續數值映(ying)射(she)為(wei)二(er)維(wei)空間中的距離(li)(li)和位置。

圖(tu)2為本發明從(cong)海量數(shu)據中(zhong)高效計算(suan)多個維度用(yong)戶數(shu)的(de)方法(fa)一實施例的(de)位置標識(shi)的(de)形成流(liu)程圖(tu)。如圖(tu)2所(suo)示包括:

步(bu)驟11:獲取數據(ju)源中的用戶(hu)信息(xi),提取用戶(hu)標識(shi);

通過(guo)分段掃(sao)描數(shu)(shu)據(ju)源,獲取用戶信息(xi),提取用戶的(de)唯一(yi)用戶標識。具有分段提取數(shu)(shu)據(ju)功能有利于數(shu)(shu)據(ju)源積累時的(de)更新。

步驟(zou)12:為每一用戶分配(pei)唯(wei)一的(de)(de)數字標(biao)(biao)識(shi),形成用戶標(biao)(biao)識(shi)和數字標(biao)(biao)識(shi)的(de)(de)鍵(jian)值對數據;

待分(fen)配的(de)(de)(de)(de)數(shu)(shu)字(zi)標(biao)(biao)識(shi)具有連續(xu)性(xing)(xing),且不可重復,每個用(yong)戶的(de)(de)(de)(de)用(yong)戶標(biao)(biao)識(shi)固定對(dui)應一個數(shu)(shu)字(zi)標(biao)(biao)識(shi),數(shu)(shu)字(zi)標(biao)(biao)識(shi)的(de)(de)(de)(de)分(fen)配具有隨機性(xing)(xing)。保證鍵及鍵值的(de)(de)(de)(de)唯一性(xing)(xing),數(shu)(shu)字(zi)標(biao)(biao)識(shi)的(de)(de)(de)(de)分(fen)配符(fu)合正(zheng)態分(fen)布。

步(bu)驟13:利用鍵(jian)值對(dui)數據(ju)建(jian)立(li)可讀入內存的用戶鍵(jian)值對(dui)結構(gou)數據(ju)。

例(li)如,利用(yong)(yong)JAVA編程將該用(yong)(yong)戶(hu)(hu)標(biao)識(shi)和數字標(biao)識(shi)的(de)(de)對應關系加(jia)載(zai)至(zhi)哈(ha)希映射對象HashMap中(zhong),形成"用(yong)(yong)戶(hu)(hu)名:數字標(biao)識(shi)"的(de)(de)鍵值對數據結構,用(yong)(yong)戶(hu)(hu)標(biao)識(shi)為(wei)鍵,數字標(biao)識(shi)為(wei)值。

圖(tu)(tu)3為本發明從海量數據中高效計算多(duo)個(ge)維度用戶(hu)數的(de)(de)方(fang)法(fa)一(yi)實(shi)施例的(de)(de)用戶(hu)分布的(de)(de)形(xing)成(cheng)流程圖(tu)(tu)。如圖(tu)(tu)3所示包括:

步驟21:分段掃描數據(ju)源(yuan),提取數據(ju)源(yuan)中(zhong)單(dan)一(yi)維度的用戶數據(ju)中(zhong)的用戶信息,形成相應的用戶標識;

可(ke)以(yi)是(shi)同步提取數(shu)據(ju)源中(zhong)(zhong)其他各維(wei)度(du)的(de)(de)用(yong)戶數(shu)據(ju)中(zhong)(zhong)的(de)(de)用(yong)戶信息,形成后續并行的(de)(de)數(shu)據(ju)處理過程(cheng)。

步驟22:用(yong)(yong)戶標識與內存中的(de)(de)用(yong)(yong)戶鍵(jian)(jian)值對(dui)結構數據比較,形成去重的(de)(de)用(yong)(yong)戶的(de)(de)相應(ying)鍵(jian)(jian)值對(dui)數據;

去重(zhong),體現了(le)在(zai)同一(yi)維度中的(de)用戶(hu)(hu)數(shu)量,也可以采用對用戶(hu)(hu)標(biao)識(shi)進(jin)行(xing)標(biao)記,對標(biao)記進(jin)行(xing)布爾(er)或運算,過濾(lv)重(zhong)復(fu)的(de)用戶(hu)(hu)信(xin)息。例如,在(zai)分段掃(sao)描(miao)數(shu)據(ju)源的(de)過程中,在(zai)用戶(hu)(hu)鍵(jian)值對結構數(shu)據(ju)上(shang)設置(zhi)標(biao)記為(wei)1,被標(biao)記過的(de)用戶(hu)(hu)鍵(jian)值對對應(ying)的(de)重(zhong)復(fu)用戶(hu)(hu)標(biao)識(shi)放棄。適合(he)(he)在(zai)一(yi)次(ci)完(wan)整的(de)海量數(shu)據(ju)的(de)用戶(hu)(hu)分布數(shu)據(ju)形成(cheng)過程中使用,可以與分段掃(sao)描(miao)配合(he)(he)。

步驟23:將相(xiang)應用戶鍵值對數(shu)據(ju)形成線(xian)性結(jie)構(gou)數(shu)據(ju);

線性(xing)結構數據采(cai)用鏈表結構,利(li)用鍵和(he)值確定(ding)相(xiang)應鏈表節點的域值。

步驟(zou)24:利用線(xian)性結構數(shu)據(ju)中的值(zhi)定位內存中的存儲位,利用鍵作為賦值(zhi)依(yi)據(ju),賦值(zhi),形成二維空(kong)間中的用戶分(fen)布(bu)數(shu)據(ju)。

利(li)用內存(cun)(cun)的連續尋(xun)址特點,將離散(san)的用戶數據通(tong)過鍵值對映(ying)射(she)在內存(cun)(cun)的連續地址空間中,獲得位置(zhi)的索引信(xin)息,并(bing)充(chong)分利(li)用內存(cun)(cun)運算速(su)度,避免(mian)與存(cun)(cun)儲裝置(zhi)頻繁交互。

圖(tu)(tu)4為本(ben)發明從海量數據中高(gao)效(xiao)計算多個維度用戶數的方(fang)法(fa)一(yi)實(shi)施例的維度數據的形成(cheng)流程圖(tu)(tu)。如圖(tu)(tu)4所示包括(kuo):

步驟31:通過(guo)數據容(rong)器(qi)建立可存儲(chu)的數據環境(jing);

利用數據庫(ku)中存儲二(er)進(jin)制大對象(xiang)(xiang)文件的(de)容器BLOB建立(li)數據容器,也可以用個編(bian)程語言化(hua)凝重(zhong)的(de)相應數據類(lei)型對象(xiang)(xiang)形成容器。

步驟32:根據(ju)用戶分布數據(ju)中的位置數據(ju)確定存儲范圍;

位置(zhi)數(shu)(shu)據的(de)最大值可用(yong)(yong)來(lai)確定數(shu)(shu)據容(rong)器的(de)尺(chi)寸,數(shu)(shu)據容(rong)器的(de)尺(chi)寸與(yu)位置(zhi)數(shu)(shu)據數(shu)(shu)值相(xiang)適(shi)應(ying),可以后續擴(kuo)大,與(yu)用(yong)(yong)戶積(ji)累更新相(xiang)適(shi)應(ying)。

步驟(zou)33:根據用戶分(fen)布數據中的位置(zhi)數據在數據容器(qi)的相應位賦值,在數據容器(qi)的其他位填充;

在數據容器的與位置數據對應(ying)的位賦(fu)值1,在其他位賦(fu)值0。也可以先填充(chong)0,再做相應(ying)的賦(fu)值過程。

步驟(zou)34:將數據(ju)容器(qi)中的內容形成磁盤(pan)文件,作(zuo)為單(dan)一維度的用戶的位置的數據(ju)文件。

利用(yong)數據容器(qi)形(xing)成(cheng)尺寸與內存地址(zhi)相應的(de)(de)位或(huo)字(zi)節的(de)(de)對(dui)應存儲,將內存地址(zhi)中(zhong)的(de)(de)信(xin)息(xi)映(ying)(ying)(ying)射為磁(ci)盤文件中(zhong)具(ju)體(ti)的(de)(de)位或(huo)字(zi)節。用(yong)于(yu)映(ying)(ying)(ying)射用(yong)戶標識(shi)的(de)(de)連(lian)續(xu)內存地址(zhi)在磁(ci)盤文件中(zhong)形(xing)成(cheng)相對(dui)起始位置的(de)(de)偏移地址(zhi),保(bao)證了映(ying)(ying)(ying)射前后(hou)的(de)(de)位置和(he)間距的(de)(de)固定。

在本發明從海量數(shu)(shu)(shu)據(ju)(ju)中(zhong)高效計算(suan)多個(ge)維(wei)度(du)用戶(hu)(hu)數(shu)(shu)(shu)的(de)(de)(de)方法一(yi)實施例的(de)(de)(de)數(shu)(shu)(shu)據(ju)(ju)處理(li)過程中(zhong),在上述步驟21中(zhong)以并行方式(shi)同(tong)步提取數(shu)(shu)(shu)據(ju)(ju)源中(zhong)其他(ta)各維(wei)度(du)的(de)(de)(de)用戶(hu)(hu)數(shu)(shu)(shu)據(ju)(ju)中(zhong)的(de)(de)(de)用戶(hu)(hu)信息的(de)(de)(de)相應后續步驟會形成若(ruo)干個(ge)單(dan)一(yi)維(wei)度(du)的(de)(de)(de)用戶(hu)(hu)的(de)(de)(de)位置的(de)(de)(de)數(shu)(shu)(shu)據(ju)(ju)文件。

圖5為(wei)本發明從海量數據中高效計算多(duo)個維度用戶數的(de)方法一實施例的(de)多(duo)維度用戶分析(xi)的(de)形成(cheng)流程圖。如圖5所示包括:

步驟(zou)41:利(li)用數據(ju)容器獲取不同單一維度的用戶的位置的數據(ju)文件(jian);

步驟42:在數(shu)據容器中對各數(shu)據文件的相應(ying)位(wei)進行布(bu)爾運(yun)算(suan),形成(cheng)布(bu)爾運(yun)算(suan)的結果(guo)序列,計數(shu)結果(guo)序列中的標識(shi)值,形成(cheng)相應(ying)維度的用戶數(shu)信息。

單一維度用(yong)(yong)戶(hu)位(wei)置(zhi)數據文件中(zhong)包括以位(wei)數據形成(cheng)的用(yong)(yong)戶(hu)分布(bu)數據中(zhong)的位(wei)置(zhi)信息和用(yong)(yong)戶(hu)信息,利(li)用(yong)(yong)相同位(wei)置(zhi)的用(yong)(yong)戶(hu)信息標(biao)記內容做必要的布(bu)爾運算,可以充分利(li)用(yong)(yong)軟硬件環境的優勢,完(wan)成(cheng)數據分析。

例(li)如,不同(tong)維度用戶的數據文件中相同(tong)位置的布爾運(yun)算(suan)有(you)下(xia)述(shu)兩種(zhong):

位與是兩(liang)個(ge)二進制(zhi)位做與運算(suan)(suan):該兩(liang)個(ge)位必須都為(wei)(wei)1時,它們的與運算(suan)(suan)結果才(cai)為(wei)(wei)1,否(fou)則為(wei)(wei)0;

位(wei)或是兩個二進制位(wei)做(zuo)或運算:該(gai)兩個位(wei)只要有(you)一個為(wei)(wei)1,它們的或運算結(jie)果就(jiu)為(wei)(wei)1,否則為(wei)(wei)0。

將BLOB存儲(chu)位置二進制位對象轉換為JAVA中表示(shi)大整數數據結(jie)構(gou)的BigInteger對象;

若是統(tong)計一個(ge)緯度(du)的(de)用(yong)戶數(shu)(shu)(shu),則對單(dan)一維度(du)用(yong)戶位置數(shu)(shu)(shu)據(ju)文件調用(yong)BigInteger對象的(de)bitCount()方法,統(tong)計其中二進(jin)制(zhi)1的(de)個(ge)數(shu)(shu)(shu),就(jiu)能夠獲(huo)得用(yong)戶數(shu)(shu)(shu)的(de)數(shu)(shu)(shu)據(ju)。

若是統計多個(ge)(ge)緯(wei)度組合匹配的(de)用(yong)戶數(shu),則(ze)要對(dui)多個(ge)(ge)單一維度用(yong)戶位置數(shu)據文件相應的(de)位對(dui)象進行布爾運(yun)算(suan)(suan),形成一個(ge)(ge)二(er)進制(zhi)序列(lie),再計算(suan)(suan)位運(yun)算(suan)(suan)后的(de)BigInteger對(dui)象的(de)1的(de)個(ge)(ge)數(shu),才能(neng)得到所(suo)需求的(de)用(yong)戶數(shu)數(shu)據。

本發明的從海量數據中(zhong)高效計算(suan)多個(ge)維度(du)用戶數的方法的上述實施例(li)的中(zhong)的去重,可(ke)以與線性結構數據的結構優化相結合,形成(cheng)另(ling)一種用戶分布(bu)數據的形成(cheng)過(guo)程,包括(kuo):

在步驟22替(ti)換(huan)為:用戶(hu)標(biao)識與內存中的用戶(hu)鍵值對結構數據(ju)比較,形成(cheng)包括重復用戶(hu)的相應鍵值對數據(ju);

在步驟(zou)23的線性結(jie)構數(shu)(shu)據(ju)采(cai)用隊(dui)(dui)列(lie)數(shu)(shu)據(ju)結(jie)構:將相應用戶(hu)鍵值(zhi)(zhi)對數(shu)(shu)據(ju)形成隊(dui)(dui)列(lie),記(ji)錄包含重復(fu)出(chu)現的用戶(hu)鍵值(zhi)(zhi)。

相應的,在(zai)(zai)步驟(zou)33替換為(wei):根據用(yong)戶(hu)分(fen)布數據中(zhong)的位(wei)(wei)置(zhi)數據在(zai)(zai)數據容器的相應位(wei)(wei)利(li)用(yong)布爾運算(suan)去(qu)重、賦(fu)值,在(zai)(zai)數據容器的其他(ta)位(wei)(wei)填充。

本實施例中,利(li)用(yong)改(gai)變(bian)(bian)線(xian)性結(jie)構數(shu)(shu)據的(de)數(shu)(shu)據結(jie)構,改(gai)變(bian)(bian)了(le)去(qu)重的(de)處理(li)步驟和實現位置,可以使得去(qu)重盡量(liang)利(li)用(yong)低級的(de)布爾運算,避免對高級數(shu)(shu)據對象的(de)運算,進一(yi)步提高處理(li)性能。

圖(tu)(tu)6為(wei)本發明從(cong)海量數(shu)(shu)據(ju)中(zhong)高效計(ji)算(suan)多個維(wei)度用(yong)(yong)(yong)戶(hu)(hu)(hu)數(shu)(shu)的(de)(de)(de)方(fang)法一(yi)(yi)(yi)實施(shi)例形(xing)(xing)成維(wei)度用(yong)(yong)(yong)戶(hu)(hu)(hu)數(shu)(shu)據(ju)的(de)(de)(de)過程示意圖(tu)(tu)。如(ru)圖(tu)(tu)6所(suo)示,用(yong)(yong)(yong)戶(hu)(hu)(hu)標識(shi)鍵值結構形(xing)(xing)成的(de)(de)(de)鍵值對(dui)(dui)(dui)(dui)為(wei)“用(yong)(yong)(yong)戶(hu)(hu)(hu):數(shu)(shu)值”,一(yi)(yi)(yi)用(yong)(yong)(yong)戶(hu)(hu)(hu)對(dui)(dui)(dui)(dui)應(ying)一(yi)(yi)(yi)個唯(wei)一(yi)(yi)(yi)的(de)(de)(de)數(shu)(shu)值,數(shu)(shu)值以遞增的(de)(de)(de)整數(shu)(shu)連續(xu)分配。數(shu)(shu)值與內(nei)(nei)存的(de)(de)(de)地(di)址(zhi)(zhi)(zhi)相(xiang)匹配,一(yi)(yi)(yi)數(shu)(shu)值對(dui)(dui)(dui)(dui)應(ying)內(nei)(nei)存一(yi)(yi)(yi)地(di)址(zhi)(zhi)(zhi)(具(ju)體(ti)為(wei)位地(di)址(zhi)(zhi)(zhi)或字節地(di)址(zhi)(zhi)(zhi))。當(dang)在單一(yi)(yi)(yi)維(wei)度的(de)(de)(de)用(yong)(yong)(yong)戶(hu)(hu)(hu)位置計(ji)算(suan)時,例如(ru)該維(wei)度的(de)(de)(de)數(shu)(shu)據(ju)對(dui)(dui)(dui)(dui)象(xiang)中(zhong)出現user1、2、3、5、6,那(nei)么(me)經(jing)計(ji)算(suan)映射,在相(xiang)應(ying)內(nei)(nei)存地(di)址(zhi)(zhi)(zhi)的(de)(de)(de)寄存器置1,則所(suo)有用(yong)(yong)(yong)戶(hu)(hu)(hu)范圍內(nei)(nei)的(de)(de)(de)用(yong)(yong)(yong)戶(hu)(hu)(hu)信(xin)息序列數(shu)(shu)據(ju)位1110110,該數(shu)(shu)據(ju)采用(yong)(yong)(yong)BLOB對(dui)(dui)(dui)(dui)象(xiang)可以直接處(chu)理為(wei)相(xiang)應(ying)的(de)(de)(de)二進(jin)制(zhi)序列形(xing)(xing)成相(xiang)應(ying)的(de)(de)(de)磁盤文件,使位置及用(yong)(yong)(yong)戶(hu)(hu)(hu)信(xin)息與維(wei)度相(xiang)對(dui)(dui)(dui)(dui)應(ying)地(di)保(bao)存,并用(yong)(yong)(yong)于后續(xu)的(de)(de)(de)數(shu)(shu)據(ju)分析。

根據本發明實施例(li)的從海量數(shu)據中高效計算(suan)多個維(wei)度(du)用戶數(shu)的方法形成(cheng)的相(xiang)應的處理裝(zhuang)置,至少(shao)包括:

用(yong)戶分(fen)(fen)布(bu)數(shu)據(ju)生成裝置,用(yong)于(yu)掃描數(shu)據(ju)源(yuan),利用(yong)位(wei)(wei)置標識(shi)定(ding)位(wei)(wei)單一維度下的用(yong)戶位(wei)(wei)置信(xin)息,形成用(yong)戶分(fen)(fen)布(bu)數(shu)據(ju);

維度(du)用戶數(shu)據(ju)(ju)生成裝置,用于根據(ju)(ju)用戶分布數(shu)據(ju)(ju)形(xing)成可存儲的維度(du)用戶數(shu)據(ju)(ju)的裝置;

多(duo)維數(shu)據(ju)分析結果生成裝(zhuang)(zhuang)置(zhi),用于在可存儲的(de)維度(du)用戶數(shu)據(ju)間,通過布爾(er)運算形成多(duo)維數(shu)據(ju)分析結果的(de)裝(zhuang)(zhuang)置(zhi)。

還包括位置(zhi)標(biao)識裝置(zhi),用于建(jian)立用戶標(biao)識鍵值結構,形成用戶的位置(zhi)標(biao)識。

以上(shang)所述(shu)僅為本發明(ming)的(de)較佳(jia)實施例而(er)已,并不(bu)用(yong)以限制本發明(ming),凡在本發明(ming)的(de)精(jing)神和原則之內,所作的(de)任何修(xiu)改、等(deng)同替(ti)換等(deng),均應(ying)包(bao)含在本發明(ming)的(de)保護范圍(wei)之內。

當前第1頁1 2 3 
網友(you)詢問(wen)留言(yan) 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1