一種數(shù)據(jù)連接優(yōu)化方法和數(shù)據(jù)運算系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通信領(lǐng)域,尤其涉及一種數(shù)據(jù)連接優(yōu)化方法和數(shù)據(jù)運算系統(tǒng)。
【背景技術(shù)】
[0002] 在數(shù)據(jù)處理中,數(shù)據(jù)的連接操作是非常常見且耗時的。例如有兩個數(shù)據(jù)庫R和S,R 包含數(shù)據(jù)條目A和B,記為R(A,B),S包含數(shù)據(jù)條目B和C,記為S(BA)13R (A, B) ? S(B1C) 表示R和S之間的連接操作,連接條件是R. B = S. B。MapReduce是當(dāng)下大數(shù)據(jù)處理技術(shù)中 的主流編程模型,將數(shù)據(jù)處理任務(wù)抽象為map任務(wù)和reduce任務(wù),在map階段完成對數(shù)據(jù) 的過濾處理,在reduce階段完成為數(shù)據(jù)的聚集處理。
[0003] 在該MapReduce編程模型中,最簡單的等值連接操作為reduce side join,其中, 在reduce side join中,R和S的所有元素都得傳輸給reduce,這對于網(wǎng)絡(luò)資源的消耗較 大,但是,有些數(shù)據(jù)是可以不用傳輸?shù)模鐚τ赗. B中某一個取值,若該值在S. B中不出 現(xiàn)時是不需要傳輸給reduce的,為了優(yōu)化MapReduce中連接的效率,業(yè)界引入了 map side join、Semi join等連接優(yōu)化方法。
[0004] 其中,在map side join這種連接方法中,可以選擇R和S中較小的一個表,假設(shè) 為R,再將R復(fù)制多份,讓每個map節(jié)點的內(nèi)存中存在一份,然后只掃描大表S,這樣對于S中 的每一條記錄,在哈希表中查找是否有相同的key記錄如果有,則連接后輸出即可,但是這 種連接方法只適用于兩個待連接表中一個表非常大,另一個表非常小,以至于小表可以直 接存放到內(nèi)存中,但是當(dāng)兩個表都非常大時,就會撐爆map節(jié)點的內(nèi)存,使用范圍局限;在 Semi join連接方法中,也是選取一個小表,假設(shè)為R,先將R. B抽取出來,保存到文件T中, 并將文件T存放至內(nèi)存中,在map階段,將T復(fù)制到各個map節(jié)點上,然后檢查S. B的每個 取值,若其值不在T中,則將S中對應(yīng)的記錄過濾掉,其余的記錄采用與map side join相 同的操作,這樣也會存在map side join中使用范圍局限的問題。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實施例提供一種數(shù)據(jù)連接優(yōu)化方法和數(shù)據(jù)運算系統(tǒng),能夠解決現(xiàn)有的提高 數(shù)據(jù)連接效率的連接方法存在的使用范圍局限的問題。
[0006] 第一方面,提供一種數(shù)據(jù)連接優(yōu)化方法,包括:
[0007] Hi1個第一 Map節(jié)點分別統(tǒng)計中心節(jié)點對數(shù)據(jù)庫分配的第一數(shù)據(jù)塊中來源于同一數(shù) 據(jù)庫的同一連接元素對應(yīng)的記錄,以獲取統(tǒng)計結(jié)果,并將所述統(tǒng)計結(jié)果發(fā)送至所述中心節(jié) 點,使得所述中心節(jié)點將所述統(tǒng)計結(jié)果發(fā)送至Ii 1個第一 Reduce節(jié)點,其中同一連接元素的 統(tǒng)計結(jié)果發(fā)送至同一第一 Reduce節(jié)點;
[0008] 所述Ii1個第一 Reduce節(jié)點分別根據(jù)所述統(tǒng)計結(jié)果獲取各自的Reduce節(jié)點中來 源于同一數(shù)據(jù)庫的連接元素對應(yīng)的記錄的記錄總數(shù),根據(jù)所述記錄總數(shù)與預(yù)設(shè)的閾值確定 所述連接元素所屬的第一集合,并將所述第一集合發(fā)送至所述中心節(jié)點,所述第一集合用 于表征所述連接元素的頻繁取值情況;
[0009] 所述中心節(jié)點對所述第一集合中的連接元素重新排序,得到相應(yīng)的第二集合,并 對所述第二集合中的連接元素執(zhí)行向量插入操作,獲取所述第二集合對應(yīng)的查詢向量;
[0010] 所述中心節(jié)點重新將所述數(shù)據(jù)庫分配給m2個第二Map節(jié)點,并將所述第一集合和 所述查詢向量發(fā)送給所述m 2個第二Map節(jié)點;
[0011] 所述Hi2個第二Map節(jié)點分別根據(jù)分配的第二數(shù)據(jù)塊中的記錄和所述查詢向量確 定所述記錄中的連接元素所屬的第一集合,并根據(jù)所述第一集合之間針對所述連接元素的 交集運算確定是否對所述連接元素進行連接操作。
[0012] 結(jié)合第一方面,在第一方面的第一種可能實現(xiàn)的方式中,所述Hi1個第一 Map節(jié)點 分別統(tǒng)計中心節(jié)點對數(shù)據(jù)庫分配的第一數(shù)據(jù)塊中來源于同一數(shù)據(jù)庫的同一連接元素對應(yīng) 的記錄,以獲取統(tǒng)計結(jié)果包括:
[0013] 所述Hi1個第一 Map節(jié)點分別調(diào)用map函數(shù)從所述第一數(shù)據(jù)塊中抽取出每一條包 括所述連接元素的記錄,并輸出第一鍵值對,所述第一鍵值對包括所述連接元素、表征所述 連接元素的數(shù)據(jù)來源的標(biāo)識和計數(shù),所述計數(shù)為1 ;
[0014] 針對所述第一數(shù)據(jù)塊中同一連接元素,將所述表征所述連接元素的數(shù)據(jù)來源的標(biāo) 識相同的所述第一鍵值對中的計數(shù)累加,得到所述第一數(shù)據(jù)塊中相同數(shù)據(jù)來源的同一連接 元素對應(yīng)的記錄的數(shù)量。
[0015] 結(jié)合第一方面或第一方面的第一種可能實現(xiàn)的方式,在第一方面的第二種可能實 現(xiàn)的方式中,若所述數(shù)據(jù)庫包括第一數(shù)據(jù)庫和第二數(shù)據(jù)庫,則所述根據(jù)所述記錄總數(shù)與預(yù) 設(shè)的閾值確定所述連接元素所屬的第一集合包括:
[0016] 當(dāng)所述第一 Reduce節(jié)點中所述連接元素來源于所述第一數(shù)據(jù)庫的第一記錄總數(shù) 小于所述閾值,且來源于所述第二數(shù)據(jù)庫的第二記錄總數(shù)小于所述閾值時,若所述第一記 錄總數(shù)不等于零,則確定所述連接元素所屬的第一集合為集合R thin,若所述第二記錄總數(shù) 不為零,則確定所述連接元素所屬的第一集合為集合Sthin,所述集合R thin和所述集合S &"均 包括所述第一數(shù)據(jù)庫和所述第二數(shù)據(jù)庫中稀疏出現(xiàn)的連接元素;
[0017] 若所述第一記錄總數(shù)大于或等于所述閾值,且所述第一記錄總數(shù)大于或等于所述 第二記錄總數(shù),則確定所述連接元素所屬的第一集合為集合R dai,所述集合Rdf3n包括在所述 第一數(shù)據(jù)庫中高頻出現(xiàn),并且出現(xiàn)次數(shù)大于所述第二數(shù)據(jù)庫中的出現(xiàn)次數(shù)的連接元素;若 且所述第二記錄總數(shù)不為零,則確定所述連接元素所屬的第一集合為集合S mot,所述集合 Smot包括在所述第二數(shù)據(jù)庫中有出現(xiàn),但屬于所述集合R 的連接元素;
[0018] 若所述第二記錄總數(shù)大于或等于所述閾值,且所述第二記錄總數(shù)大于或等于所述 第一記錄總數(shù),則確定所述連接元素所屬的第一集合為集合S dOT,所述集合SdOT包括在所述 第二數(shù)據(jù)庫中高頻出現(xiàn),并且出現(xiàn)次數(shù)大于所述第一數(shù)據(jù)庫中的出現(xiàn)次數(shù)的連接元素;若 且所述第一記錄總數(shù)不為零,則確定所述連接元素所屬的第一集合為集合R sden,所述集合 Rsden包括在所述第一數(shù)據(jù)庫中有出現(xiàn),但屬于所述集合S 的連接元素。
[0019] 結(jié)合第一方面的第二種可能實現(xiàn)的方式,在第二方面的第三種可能實現(xiàn)的方式 中,所述中心節(jié)點對所述第一集合中的連接元素重新排序,得到相應(yīng)的第二集合,并對所述 第二集合中的連接元素執(zhí)行向量插入操作,獲取所述第二集合對應(yīng)的查詢向量包括:
[0020] 所述中心節(jié)點對所述第一集合為所述集合RdOT、所述集合Rsden、所述集合S dOT和所 述集合SRdOT中的連接元素,按照所述連接元素值的大小重新排序,得到相應(yīng)的第二集合,并 記錄所述連接元素在所述第二集合中的位置;
[0021] 針對所述集合Rden、所述集合Smot、所述集合S dOT和所述集合S RdOT相應(yīng)的第二集合, 根據(jù)預(yù)定義的初始向量對所述第二集合中的每個連接元素執(zhí)行所述向量插入操作,獲取所 述第二集合對應(yīng)的查詢向量。
[0022] 結(jié)合第一方面的第三種可能實現(xiàn)的方式,在第一方面的第四種可能實現(xiàn)的方式 中,在根據(jù)分配的第二數(shù)據(jù)塊中的記錄和所述查詢向量確定所述記錄中的連接元素所屬的 第一集合后,所述方法還包括:
[0023] 所述m2個第二Map節(jié)點分別生成所述連接元素對應(yīng)的第二鍵值對,所述第二鍵值 對包括所述連接元素、表征所述連接元素數(shù)據(jù)來源的標(biāo)識、所述連接元素所屬的第一集合 的標(biāo)識以及所述連接元素對應(yīng)的非連接元素。
[0024] 結(jié)合第一方面的第四種可能實現(xiàn)的方式,在第一方面的第五種可能實現(xiàn)的方式 中,所述根據(jù)所述第一集合之間針對所述連接元素的交集運算確定是否對所述連接元素進 行連接操作包括:
[0025] 在確定所述記錄中的連接元素所屬的第一集合后,若根據(jù)所述查詢向量確定所述 連接元素不在與所述第一集合交集不為空的另一第一集合中,則確定不對所述連接元素進 行連接操作。
[0026] 結(jié)合第一方面的第五種可能實現(xiàn)的方式,在第一方面的第六種可能實現(xiàn)的方式 中,所述方法還包括:
[0027] 所述m2個第二Map節(jié)點分別根據(jù)所述第二鍵值對所屬的第一集合確定所述第二 鍵值對相應(yīng)的第二Reduce節(jié)點的范圍,并將所述第二鍵值對發(fā)送至所述范圍內(nèi)的n 2個第 二 Reduce 節(jié)點;
[0028] 所述n2個第二Reduce節(jié)點分別根據(jù)所述第二鍵值對所屬的第一集合將所述第二 鍵值對歸為不同的隊列,并對所述隊列中的第二鍵值對進行連接操作。
[0029] 結(jié)合第一方面的第六種可能實現(xiàn)的方式,在第一方面的第七種可能實現(xiàn)的方式 中,所述m 2個第二Map節(jié)點分別根據(jù)所述第二鍵值對所屬的第一集合確定所述第二鍵值 對相應(yīng)的第二Reduce節(jié)點的范圍,并將所述第二鍵值對發(fā)送至所述范圍內(nèi)的n 2個第二 Reduce節(jié)點包括:
[0030] 若所述連接元素屬于所述集合Sthin或所述集合R thin,則將相同的所述連接元素對 應(yīng)的第二鍵值對發(fā)送至同一第二Reduce節(jié)點;
[0031] 若所述連接元素屬于所述集合RdOT,則所述第二Map節(jié)點將所述連接元素對應(yīng)的 第二鍵值對隨機發(fā)送至編號位于第一范圍內(nèi)的任一第二Reduce節(jié)點,所述第一范圍為起 始Reduce編號,至所述起始Reduce編號與所述第一數(shù)據(jù)庫中所述連接元素的記錄總數(shù)與 每個Reduce節(jié)點平均處理的記錄數(shù)的比值的和之間的編號;
[0032] 若所述連接元素屬于所述集合SdOT,則所述第二Map節(jié)點將所述連接元素對應(yīng)的 第二鍵值對隨機發(fā)送至編號位于第二范圍內(nèi)的任一第二Reduce節(jié)點,所述第二范圍為起 始Reduce編號,至所述起始Reduce編號與所述第二數(shù)據(jù)庫中所述連接元素的記錄總數(shù)與 每個Reduce節(jié)點平均處理的記錄數(shù)的比值的和之間的編號;
[0033] 若所述連接元素屬于所述集合Rsden,則所述第二Map節(jié)點將所述連接元素對應(yīng) 的第二鍵值對廣播給編號位于第三范圍內(nèi)的所有第二Reduce節(jié)點,所述第三范圍為起始 Reduce節(jié)點編號,至所述起始Reduce編號與所述第二數(shù)據(jù)庫中所述連接元素的記錄總數(shù) 與每個Reduce節(jié)點平均處理的記錄數(shù)的比值的和之間的編號;
[0034] 若所述連接元素屬于所述集合SRdOT,則所述第二Map節(jié)點將所述連接元素對應(yīng)的 第二鍵值對廣播給編號位于第四范圍內(nèi)的所有第二Reduce節(jié)點,所述第四范圍為起始第 二Reduce編號,至所述起始第二Reduce編號與所述第一數(shù)據(jù)庫中所述連接元素的記錄總 數(shù)與每個第二Reduce節(jié)點平均處理的記錄數(shù)的比值的和之間的編號。
[0035] 結(jié)合第一方面的第七種可能實現(xiàn)的方式,在第一方面的第八種可能實現(xiàn)的方式 中,所述每個第二Reduce節(jié)點平均處理的記錄數(shù)為:所述第一數(shù)據(jù)庫的文件大小與所