一種分布式數(shù)據(jù)去重處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種分布式數(shù)據(jù)去重處理方法及裝置。
【背景技術(shù)】
[0002] 隨著業(yè)務(wù)發(fā)展,我們的用戶行為數(shù)據(jù)出現(xiàn)了爆發(fā)式增長,目前每天的用戶行為事 件數(shù)據(jù)已超過10億,部分產(chǎn)品的累計用戶/機器數(shù)已超5億。為了實時分析截止當(dāng)前時刻有 多少新增用戶(機器),當(dāng)天有多少用戶(機器)活躍,充值或其他的行為事件發(fā)送的人數(shù)機 器數(shù)。使用傳統(tǒng)的方法將數(shù)據(jù)儲存后計算已經(jīng)不能滿足數(shù)據(jù)量的飛速增長,即使使用分布 式的列式數(shù)據(jù)庫,導(dǎo)入的延時、計算的復(fù)雜度、數(shù)據(jù)儲存的成本都非常高。
[0003] 業(yè)界現(xiàn)有去重方案主要有兩類,一類是精確去重但是非即席查詢,而且在數(shù)據(jù)量 較大時往往需要較長的計算時間才能得出結(jié)果;第二類是非精確去重的即席查詢,查詢速 度比較快,消耗的資源也相對較少,但是計算出來的結(jié)果不是精確值。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明實施例提供的一種分布式數(shù)據(jù)去重處理方法及裝置,解決了目前的精確去 重但是非即席查詢,所導(dǎo)致的在數(shù)據(jù)量較大時往往需要較長的計算時間才能得出結(jié)果的技 術(shù)問題,以及非精確去重的即席查詢,導(dǎo)致的計算出來的結(jié)果不是精確值的技術(shù)問題。
[0005] 本發(fā)明實施例提供的一種分布式數(shù)據(jù)去重處理方法,包括:
[0006] 將具有相同去重字段值的數(shù)據(jù)對應(yīng)存儲在預(yù)置分片中;
[0007] 將存儲在所述預(yù)置分片中的所有所述數(shù)據(jù)進行列存儲到Lucene中;
[0008] 根據(jù)所述Lucene提取每個所述預(yù)置分片中的去重列,并進行每一列的倒排索引;
[0009] 根據(jù)每個所述預(yù)置分片的所述倒排索引獲取所述去重列對應(yīng)的去重值;
[0010] 將獲取到的所有所述去重值進行累加獲取到最終去重值。
[0011] 可選地,將具有相同去重字段值的數(shù)據(jù)對應(yīng)存儲在預(yù)置分片中具體包括:
[0012] 在分布式數(shù)據(jù)存儲過程中,確定分布式數(shù)據(jù)中的待去重字段;
[0013] 根據(jù)所述待去重字段對應(yīng)的所述去重字段值進行分片路由,將具有相同去重字段 值的所述數(shù)據(jù)對應(yīng)存儲在預(yù)置分片中。
[0014] 可選地,根據(jù)所述Lucene提取每個所述預(yù)置分片中的去重列,并進行每一列的倒 排索引具體包括:
[0015] 根據(jù)所述Lucene提取每個所述預(yù)置分片中的去重列;
[0016] 根據(jù)所述去重列對每一列所述數(shù)據(jù)建立對應(yīng)的倒排索引。
[0017] 可選地,根據(jù)每個所述預(yù)置分片的所述倒排索引獲取所述去重列對應(yīng)的去重值具 體包括:
[0018] 對每個所述預(yù)置分片結(jié)合預(yù)置分段位圖進行去重判斷,獲取到每一所述去重列中 每一個所述數(shù)據(jù)對應(yīng)的去重值。
[0019] 可選地,對每個所述預(yù)置分片結(jié)合預(yù)置分段位圖進行去重判斷,獲取到每一所述 去重列中每一個所述數(shù)據(jù)對應(yīng)的去重值具體包括:
[0020] 對每個所述預(yù)置分片中的所述去重列位圖進行復(fù)數(shù)個段的分段處理形成與每個 所述去重列對應(yīng)的所述預(yù)置分段位圖;
[0021] 對每個所述預(yù)置分段位圖進行去重判斷,獲取到每一所述去重列中每一個所述數(shù) 據(jù)對應(yīng)的去重值。
[0022] 可選地,對每個所述預(yù)置分片中的所述去重列位圖進行復(fù)數(shù)個段的分段處理形成 與每個所述去重列對應(yīng)的所述預(yù)置分段位圖具體包括:
[0023]對所述預(yù)置分段位圖中的一個段進行優(yōu)先隊列的創(chuàng)建;
[0024] 將所述數(shù)據(jù)依次插入進所述優(yōu)先隊列,直到所述優(yōu)先隊列插滿;
[0025] 將插滿所述數(shù)據(jù)的所述優(yōu)先隊列中的數(shù)據(jù)轉(zhuǎn)移至所述預(yù)置分段位圖中形成與所 述優(yōu)先隊列的長度一致的新的所述預(yù)置分段位圖。
[0026]可選地,所述優(yōu)先隊列的容量為(所述優(yōu)先隊列的長度*k)/32,所述k為大于0,且 小于1。
[0027] 本發(fā)明實施例提供的一種分布式數(shù)據(jù)去重處理裝置,包括:
[0028] 第一存儲單元,用于將具有相同去重字段值的數(shù)據(jù)對應(yīng)存儲在預(yù)置分片中;
[0029]第二存儲單元,用于將存儲在所述預(yù)置分片中的所有所述數(shù)據(jù)進行列存儲到 Lucene 中;
[0030] 索引單元,用于根據(jù)所述Lucene提取每個所述預(yù)置分片中的去重列,并進行每一 列的倒排索引;
[0031] 第一去重值獲取單元,用于根據(jù)每個所述預(yù)置分片的所述倒排索引獲取所述去重 列對應(yīng)的去重值;
[0032] 最終去重值獲取單元,用于將獲取到的所有所述去重值進行累加獲取到最終去重 值。
[0033]可選地,第一存儲單元具體包括:
[0034] 確定子單元,用于在分布式數(shù)據(jù)存儲過程中,確定分布式數(shù)據(jù)中的待去重字段;
[0035] 第一存儲子單元,用于根據(jù)所述待去重字段對應(yīng)的所述去重字段值進行分片路 由,將具有相同去重字段值的所述數(shù)據(jù)對應(yīng)存儲在預(yù)置分片中。
[0036]可選地,索引單元具體包括:
[0037] 提取子單元,用于根據(jù)所述Lucene提取每個所述預(yù)置分片中的去重列;
[0038] 索引子單元,用于根據(jù)所述去重列對每一列所述數(shù)據(jù)建立對應(yīng)的倒排索引。
[0039] 可選地,第一去重值獲取單元,具體用于對每個所述預(yù)置分片結(jié)合預(yù)置分段位圖 進行去重判斷,獲取到每一所述去重列中每一個所述數(shù)據(jù)對應(yīng)的去重值;
[0040] 所述第一去重值獲取單元具體包括:
[0041] 分段處理子單元,用于對每個所述預(yù)置分片中的所述去重列位圖進行復(fù)數(shù)個段的 分段處理形成與每個所述去重列對應(yīng)的所述預(yù)置分段位圖;
[0042] 第一去重值獲取子單元,用于對每個所述預(yù)置分段位圖進行去重判斷,獲取到每 一所述去重列中每一個所述數(shù)據(jù)對應(yīng)的去重值。
[0043] 可選地,分段處理子單元具體包括:
[0044]創(chuàng)建模塊,用于對所述預(yù)置分段位圖中的一個段進行優(yōu)先隊列的創(chuàng)建;
[0045] 數(shù)據(jù)插入模塊,用于將所述數(shù)據(jù)依次插入進所述優(yōu)先隊列,直到所述優(yōu)先隊列插 滿;
[0046] 數(shù)據(jù)轉(zhuǎn)移模塊,用于將插滿所述數(shù)據(jù)的所述優(yōu)先隊列中的數(shù)據(jù)轉(zhuǎn)移至所述預(yù)置 分段位圖中形成與所述優(yōu)先隊列的長度一致的新的所述預(yù)置分段位圖;
[0047]其中,所述優(yōu)先隊列的容量為(所述優(yōu)先隊列的長度*k)/32,所述k為大于0,且小 于1。
[0048] 從以上技術(shù)方案可以看出,本發(fā)明實施例具有以下優(yōu)點:
[0049] 本發(fā)明實施例提供的一種分布式數(shù)據(jù)去重處理方法及裝置,其中,分布式數(shù)據(jù)去 重處理方法包括:將具有相同去重字段值的數(shù)據(jù)對應(yīng)存儲在預(yù)置分片中;將存儲在預(yù)置分 片中的所有數(shù)據(jù)進行列存儲到Lucene中;根據(jù)Lucene提取每個預(yù)置分片中的去重列,并進 行每一列的倒排索引;根據(jù)每個預(yù)置分片的倒排索引獲取去重列對應(yīng)的去重值;將獲取到 的所有去重值進行累加獲取到最終去重值。本實施例中,通過將具有相同去重字段值的數(shù) 據(jù)對應(yīng)存儲在預(yù)置分片中,然后將存儲在預(yù)置分片中的所有數(shù)據(jù)進行列存儲到Lucene中, 再根據(jù)Lucene提取每個預(yù)置分片中的去重列,并進行每一列的倒排索引,根據(jù)每個預(yù)置分 片的倒排索引獲取去重列對應(yīng)的去重值,最后將獲取到的所有去重值進行累加獲取到最終 去重值,便實現(xiàn)了對分布式數(shù)據(jù)高效且精確的去重處理,解決了目前的精確去重但是非即 席查詢,所導(dǎo)致的在數(shù)據(jù)量較大時往往需要較長的計算時間才能得出結(jié)果的技術(shù)問題,以 及非精確去重的即席查詢,導(dǎo)致的計算出來的結(jié)果不是精確值的技術(shù)問題。
【附圖說明】
[0050] 為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可 以根據(jù)這些附圖獲得其它的附圖。
[0051] 圖1為本發(fā)明實施例提供的一種分布式數(shù)據(jù)去重處理方法的一個實施例的流程示 意圖;
[0052]圖2為本發(fā)明實施例提供的一種分布式數(shù)據(jù)去重處理方法的另一個實施例的流程 示意圖;
[0053]圖3為本發(fā)明實施例提供的一種分布式數(shù)據(jù)去重處理方法的另一個實施例的流程 示意圖;
[0054] 圖4為本發(fā)明實施例提供的預(yù)置分段位圖的一個實施例的流程示意圖;
[0055] 圖5為本發(fā)明實施例提供的一種分布式數(shù)據(jù)去重處理裝置的一個實施例的結(jié)構(gòu)示 意圖;
[0056] 圖6為本發(fā)明實施例提供的一種分布式數(shù)據(jù)去重處理裝置的另一個實施例的結(jié)構(gòu) 示意圖;
[0057] 圖7為本發(fā)明實施例提供的一種分布式數(shù)據(jù)去重處理裝置的另一個實施例的結(jié)構(gòu) 示意圖;
[0058