本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)庫(kù)領(lǐng)域中度量空間下的連接處理技術(shù),特別是涉及一種基于MapReduce的度量空間相似連接處理方法。
背景技術(shù):
度量空間相似連接是指:在給定的度量空間中兩個(gè)數(shù)據(jù)集之間的笛卡爾積中找到所有相似性高于(或者距離小于)給定閾值的數(shù)據(jù)對(duì)。度量空間相似連接處理被廣泛地應(yīng)用在社會(huì)的各個(gè)領(lǐng)域中,其中包括重復(fù)數(shù)據(jù)檢測(cè)和刪除。
隨著以社交網(wǎng)絡(luò)、電子商務(wù)為代表的新型信息發(fā)布方式的不斷涌現(xiàn),以及云計(jì)算、物聯(lián)網(wǎng)計(jì)算機(jī)技術(shù)的興起,數(shù)據(jù)正以前所未有的速度不斷地增長(zhǎng)和累積,隨之而來是以MapReduce為代表的各類大數(shù)據(jù)分布式系統(tǒng)蓬勃發(fā)展,大數(shù)據(jù)的時(shí)代已經(jīng)到來。在這樣一個(gè)大數(shù)據(jù)時(shí)代,傳統(tǒng)集中式的相似連接算法已經(jīng)漸漸滿足不了當(dāng)前快速地對(duì)海量數(shù)據(jù)進(jìn)行重復(fù)數(shù)據(jù)檢測(cè)和刪除的要求。因此,設(shè)計(jì)一個(gè)具有高可擴(kuò)展性、高效率的分布式相似連接處理方法成為了學(xué)術(shù)界與工業(yè)界的迫切需求。
針對(duì)基于MapReduce的度量空間相似連接處理方法,目前國(guó)內(nèi)外學(xué)者已經(jīng)做出了一些工作。其中,最具代表性的算法是基于球形劃分技術(shù)的MAPSS方法和基于二分超平面劃分技術(shù)的ClusterJoin方法。然而,這些方法主要有兩個(gè)缺陷:(1)這些方法隨機(jī)地選擇劃分的中心點(diǎn),這可能導(dǎo)致數(shù)據(jù)劃分不均衡,需要對(duì)數(shù)據(jù)進(jìn)行進(jìn)一步的重劃分;(2)這些方法只關(guān)注數(shù)據(jù)劃分方案,而忽略了數(shù)據(jù)劃分完成后,對(duì)各劃分內(nèi)部數(shù)據(jù)之間進(jìn)行相似度計(jì)算時(shí),設(shè)計(jì)剪枝策略以提高效率的方式。我們的方法很好地彌補(bǔ)了上述兩個(gè)缺陷,提升了相似連接處理的效率,高效地對(duì)重復(fù)數(shù)據(jù)進(jìn)行檢測(cè)和刪除。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明提供一種基于MapReduce的度量空間相似連接處理方法,該方法基于MapReduce分布式計(jì)算框架,先在Map階段對(duì)給定的數(shù)據(jù)集進(jìn)行劃分,而后在Reduce階段進(jìn)行相似性計(jì)算以得到重復(fù)數(shù)據(jù)結(jié)果,進(jìn)而進(jìn)行刪除。
為了達(dá)到上述目的,本發(fā)明所采用技術(shù)方案如下:一種基于MapReduce的度量空間相似連接處理方法,具體包括如下步驟:一種基于MapReduce的度量空間相似連接處理方法,該方法的步驟如下:
(1)對(duì)應(yīng)用中給定的度量空間數(shù)據(jù)集進(jìn)行隨機(jī)采樣,得到樣本數(shù)據(jù);
(2)對(duì)得到的樣本數(shù)據(jù)進(jìn)行支樞點(diǎn)選擇;
(3)將應(yīng)用中給定的整個(gè)數(shù)據(jù)集(包括樣本數(shù)據(jù))從度量空間映射至向量空間;
(4)利用步驟(3)中得到的映射到向量空間的樣本數(shù)據(jù)構(gòu)建KD樹,得到相應(yīng)的空間劃分;
(5)在Map階段,根據(jù)步驟(4)中得到的空間劃分,對(duì)步驟(3)中得到的整個(gè)數(shù)據(jù)集進(jìn)行劃分;
(6)在Reduce階段對(duì)劃分后的數(shù)據(jù)進(jìn)行相似度計(jì)算,得到相似連接的處理結(jié)果。
進(jìn)一步的,所述步驟(2)具體為:
(2.1)在樣本數(shù)據(jù)中找出離群點(diǎn)作為支樞點(diǎn)的備選集合;
(2.2)根據(jù)支樞點(diǎn)的選擇目標(biāo),對(duì)備選集合中的點(diǎn)進(jìn)行增量式的貪心選擇。
進(jìn)一步的,所述步驟(3)具體為:對(duì)于每一個(gè)在度量空間中的數(shù)據(jù),計(jì)算與步驟(2)中得到的支樞點(diǎn)之間的距離,并以求得的距離作為向量空間中各維度的坐標(biāo)值,以得到度量空間數(shù)據(jù)在向量空間中的坐標(biāo)。
進(jìn)一步的,所述的步驟(4)具體為:對(duì)步驟(3)中得到的樣本數(shù)據(jù),構(gòu)建KD樹,得到的KD樹中包含數(shù)據(jù)點(diǎn)個(gè)數(shù)相等的葉子節(jié)點(diǎn),各葉子節(jié)點(diǎn)對(duì)應(yīng)的空間區(qū)域即為空間劃分的結(jié)果。
進(jìn)一步的,所述的步驟(5)在Map階段,將步驟(3)中得到的映射至向量空間后的整個(gè)數(shù)據(jù)集劃分至步驟(4)中得到的相應(yīng)空間劃分中去。
進(jìn)一步的,所述步驟(6)具體為:
(6.1)在Reduce階段,對(duì)于每個(gè)劃分,將各劃分內(nèi)部的數(shù)據(jù)在隨機(jī)選定的一個(gè)維度上,使用快速排序算法進(jìn)行排序整理;
(6.2)利用平面掃描法,對(duì)排序后的數(shù)據(jù)集進(jìn)行度量空間距離計(jì)算以驗(yàn)證結(jié)果,并結(jié)合區(qū)域過濾技術(shù)對(duì)距離計(jì)算進(jìn)行剪枝。
進(jìn)一步的,所述區(qū)域過濾技術(shù)是指:若兩個(gè)數(shù)據(jù)對(duì)象在向量空間任意維度上的差值大于給定的距離閾值,則它們不可能成為最終結(jié)果,從而可以不經(jīng)過度量空間距離計(jì)算就被剪掉。
本發(fā)明具有的有益效果是:本發(fā)明在MapReduce分布式計(jì)算框架下,充分利用了計(jì)算機(jī)數(shù)據(jù)庫(kù)領(lǐng)域中與度量空間相似連接處理相關(guān)的技術(shù),在Map階段中保證結(jié)果正確的前提下,對(duì)數(shù)據(jù)集進(jìn)行了盡可能均勻的劃分,并在Reduce階段設(shè)計(jì)了有效的剪枝策略,進(jìn)行相似度計(jì)算;大大降低了CPU時(shí)間、網(wǎng)絡(luò)通信開銷和I/O開銷,提供了高效的相似連接處理性能,以實(shí)現(xiàn)快速地對(duì)海量數(shù)據(jù)進(jìn)行重復(fù)檢測(cè)和刪除。
附圖說明
圖1是本發(fā)明的實(shí)施步驟流程圖;
圖2為基于KD樹的空間劃分示意圖;
圖3為基于KD樹的數(shù)據(jù)劃分示意圖;
圖4為Reduce階段相似連接處理示意圖。
具體實(shí)施方式
現(xiàn)結(jié)合附圖和具體實(shí)施對(duì)本發(fā)明的技術(shù)方案作進(jìn)一步說明:
如圖1所示,本發(fā)明具體實(shí)施過程和工作原理如下:
步驟(1):對(duì)應(yīng)用中給定的度量空間數(shù)據(jù)集進(jìn)行隨機(jī)采樣,得到樣本數(shù)據(jù)。
步驟(2):對(duì)得到的樣本數(shù)據(jù)進(jìn)行支樞點(diǎn)選擇;選出的支樞點(diǎn)要求保證數(shù)據(jù)在向量空間中相互之間的距離與其在原度量空間中的距離盡可能的接近,其選擇的具體步驟包括:
1)在樣本數(shù)據(jù)中找出離群點(diǎn)作為支樞點(diǎn)的備選集合;
2)根據(jù)樞紐點(diǎn)的選擇目標(biāo),對(duì)備選集合中的點(diǎn)進(jìn)行增量式的貪心選擇。
步驟(3):將應(yīng)用給定的整個(gè)數(shù)據(jù)集(包括樣本數(shù)據(jù))從度量空間映射至向量空間;向量空間映射的方式是對(duì)于每一個(gè)在度量空間中的數(shù)據(jù),計(jì)算與步驟(2)中得到的支樞點(diǎn)之間的距離,并以求得的距離作為向量空間中各維度的坐標(biāo)值,得到度量空間數(shù)據(jù)在向量空間中的坐標(biāo)。
步驟(4):利用步驟(3)中得到的樣本數(shù)據(jù)構(gòu)建KD樹,得到相應(yīng)的空間劃分;具體如下:對(duì)步驟(3)中得到的樣本數(shù)據(jù)建立KD樹,得到的KD樹中包含數(shù)據(jù)點(diǎn)個(gè)數(shù)相等的葉子節(jié)點(diǎn),各葉子節(jié)點(diǎn)對(duì)應(yīng)的空間區(qū)域即為空間劃分的結(jié)果;下面以圖2為例對(duì)KD樹的構(gòu)建進(jìn)行說明,其中樣本數(shù)據(jù)為{q2,o3,q4,o4,o5,q5,o7,q8}:
1)在一個(gè)隨機(jī)選擇的維度上,圖2(a)中選到維度y,將所有的采樣數(shù)據(jù)進(jìn)行排序,進(jìn)而將樣本數(shù)據(jù)等分為A、B兩個(gè)節(jié)點(diǎn),即A={q2,o3,q4,o4}和B={o5,q5,o7,q8};
2)分別對(duì)A、B兩個(gè)節(jié)點(diǎn)進(jìn)行迭代劃分,最終得到圖2(b)所示的四個(gè)節(jié)點(diǎn),即P1={q2,o4},P2={o3,q4},P3={o5,q5}和P4={o7,q8};
3)最終得到各葉子節(jié)點(diǎn)對(duì)應(yīng)的空間劃分,即為圖2(b)中節(jié)點(diǎn)P1、P2、P3和P4對(duì)應(yīng)的包圍盒BB(P1)、BB(P2)、BB(P3)和BB(P4)。
步驟(5):在Map階段,根據(jù)步驟(4)中得到的空間劃分,對(duì)步驟(3)中得到的整個(gè)數(shù)據(jù)集進(jìn)行劃分;具體如下:所述的步驟(5)在Map階段,將步驟(3)中得到的映射至向量空間后的整個(gè)數(shù)據(jù)集,劃分至相應(yīng)的步驟(4)中得到的空間劃分中去,以圖3為例,假定應(yīng)用給定的數(shù)據(jù)集為Q={q1,q2,…,q8}、O={o1,o2,…,o8},具體劃分步驟如下:
1)如圖3(a)所示,將數(shù)據(jù)集Q劃分至對(duì)應(yīng)的劃分中,得到四個(gè)數(shù)據(jù)集Q的劃分P1Q={q1,q2},P2Q={q3,q4},P3Q={q5}以及P4Q={q6,q7,q8};
2)如圖3(a)所示,在得到的劃分PiQ后,計(jì)算能將PiQ中所有數(shù)據(jù)對(duì)象包圍住的最小包圍盒MBB(P1Q)、MBB(P2Q)、MBB(P3Q)以及MBB(P4Q);
3)計(jì)算各劃分PiQ的搜索范圍,劃分PiQ的搜索范圍為其對(duì)應(yīng)包圍盒范圍外擴(kuò)距離閾值大小對(duì)應(yīng)的區(qū)域,如圖3(b)所示,虛線所示區(qū)域即為MBB(P2Q)的搜索范圍SR(P2Q);
4)根據(jù)得到的各個(gè)劃分的搜索范圍,將數(shù)據(jù)集O劃分至對(duì)應(yīng)劃分的搜索范圍中,如圖3(b)所示,數(shù)據(jù)集O劃分的結(jié)果為P1O={o2},P2O={o2,o3,o5,o6},P3O={o3,o5}和P4O={o3,o6,o7}。
步驟(6):在Reduce階段對(duì)劃分后的數(shù)據(jù)進(jìn)行相似度計(jì)算,得到相似連接的處理結(jié)果;具體步驟包括:
1)在Reduce階段,對(duì)于每個(gè)劃分,各劃分內(nèi)部的數(shù)據(jù)在隨機(jī)選定的一個(gè)維度上,使用快速排序算法進(jìn)行排序整理,如圖4所示,對(duì)劃分P2進(jìn)行處理時(shí),選定了維度x對(duì)數(shù)據(jù)進(jìn)行排序;
2)利用平面掃描法,對(duì)排序后的數(shù)據(jù)集進(jìn)行度量空間距離計(jì)算以驗(yàn)證結(jié)果,并結(jié)合區(qū)域過濾技術(shù)對(duì)距離計(jì)算進(jìn)行剪枝;如圖4(a)所示,有一掃描平面從左掃描到右,現(xiàn)在掃描至數(shù)據(jù)對(duì)象q2,需為現(xiàn)在處于掃描平面的q2驗(yàn)證處于掃描平面右方距離閾值以內(nèi)的數(shù)據(jù)對(duì)象o5,o2和o3;另外,根據(jù)區(qū)域過濾技術(shù),如圖4(b)所示,o5和o3因?yàn)樘幱趒2的搜索范圍SR(q2)之外可以被剪去,最終只需要為q2驗(yàn)證其與o2的距離。