本發(fā)明涉及云計(jì)算,近似查詢處理領(lǐng)域,具體地說是一種云計(jì)算環(huán)境下實(shí)現(xiàn)高效查詢處理的混合近似查詢方法。
背景技術(shù):
大數(shù)據(jù)(Big Data)通常被認(rèn)為是具有PB級以上數(shù)據(jù)容量,包括結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)組織形式,且增長速率快,處理時(shí)間敏感的數(shù)據(jù)。隨著電子商務(wù)、社交網(wǎng)絡(luò)等新一代大規(guī)?;ヂ?lián)網(wǎng)應(yīng)用以及科學(xué)計(jì)算的蓬勃發(fā)展,大數(shù)據(jù)也廣泛存在于工業(yè)界與學(xué)術(shù)界,如互聯(lián)網(wǎng)數(shù)據(jù)、企業(yè)業(yè)務(wù)數(shù)據(jù)、統(tǒng)計(jì)數(shù)據(jù)、醫(yī)療數(shù)據(jù)、科學(xué)數(shù)據(jù)等。面對大數(shù)據(jù)的指數(shù)級增長現(xiàn)狀,如何對其進(jìn)行有效地處理與分析,從中發(fā)現(xiàn)有用的信息和潛在的規(guī)律,支持上層查詢需求并指導(dǎo)企業(yè)決策已成為當(dāng)前研究的熱點(diǎn)和難點(diǎn)。
為了解決上述問題,研究人員將在線聚集技術(shù)引入云計(jì)算領(lǐng)域,將兩者有機(jī)融合并提出云計(jì)算環(huán)境下的在線聚集查詢方法,通過尋找查詢精度和查詢性能的折中以實(shí)現(xiàn)性能的大幅提升。在線聚集首先由Hellerstein等人提出,該方法通過對原始數(shù)據(jù)集進(jìn)行隨機(jī)采樣保證樣本數(shù)據(jù)的隨機(jī)性,在此基礎(chǔ)上,通過概率統(tǒng)計(jì)方法對查詢結(jié)果做出近似估計(jì),并利用置信區(qū)間保證近似結(jié)果的精度確保其有效性。Bose和Condie等人基于pipeline思想展示了如何利用MapReduce模型實(shí)現(xiàn)在線聚集的部分基本思想(執(zhí)行結(jié)果的提前展示和交互式查詢處理),為在線聚集在云計(jì)算環(huán)境下的部署做出積極嘗試,但是這兩個(gè)系統(tǒng)都缺乏近似估計(jì)模塊,無法實(shí)現(xiàn)對查詢結(jié)果的近似估計(jì)。為此,Pansare等人提出了基于MapReduce模型的完整的在線聚集系統(tǒng),實(shí)現(xiàn)了對查詢結(jié)果的近似估計(jì),但是由于無法保證樣本的有效采集導(dǎo)致需要訪問較大的數(shù)據(jù)量才能獲得較為精確的結(jié)果(處理30%左右的數(shù)據(jù)量才能滿足精度需求)。此外,針對云計(jì)算環(huán)境下的在線聚集機(jī)制無法很好支持連接操作的問題,Shi等人提出了基于Hadoop平臺的新型在線聚集系統(tǒng)COLA,實(shí)現(xiàn)了基于數(shù)據(jù)塊粒度的隨機(jī)采樣,同時(shí)設(shè)計(jì)了面向連接操作的在線聚集MapReduce程序,一定程度上豐富了云計(jì)算環(huán)境下在線聚集的適用范圍。然而,上述所有在線聚集系統(tǒng)均采用基于中心極限定理的近似估計(jì)方法,只能對聚集查詢和部分統(tǒng)計(jì)操作作出近似估計(jì)。為此,Laptev等人基于Hadoop平臺提出了EARL系統(tǒng),該系統(tǒng)采用基于bootstrap的自舉重采樣方法實(shí)現(xiàn)對任意查詢函數(shù)的近似估計(jì)(點(diǎn)估計(jì)方法),盡管增加了在線聚集的靈活性和適用性,但是不支持對近似結(jié)果的良好區(qū)間估計(jì)。
然而上述研究工作均未考慮在線聚集方法存在的估計(jì)失效問題,在線聚集通?;谥行臉O限定理實(shí)現(xiàn)對查詢結(jié)果的近似估計(jì),當(dāng)樣本數(shù)據(jù)量大于臨界值時(shí),采樣過程服從獨(dú)立同分布的前提假設(shè)將不再成立,從而引起估計(jì)方法的失效,致使在線聚集需要完全掃描剩余數(shù)據(jù)以獲取精確結(jié)果,大幅延長整體執(zhí)行時(shí)間。
技術(shù)實(shí)現(xiàn)要素:
為了克服上述現(xiàn)有技術(shù)的不足,本發(fā)明提供一種云計(jì)算環(huán)境下的混合近似查詢方法,引入bootstrap估計(jì)理論并將傳統(tǒng)在線聚集機(jī)制在估計(jì)時(shí)間上的優(yōu)勢與bootstrap方法在穩(wěn)定性上的優(yōu)勢進(jìn)行有效融合,通過建立合理的估計(jì)失效概率模型預(yù)測傳統(tǒng)在線聚集機(jī)制的失效概率,據(jù)此實(shí)現(xiàn)兩種估計(jì)方法的動態(tài)實(shí)時(shí)切換,及時(shí)將可能失效的傳統(tǒng)在線聚集查詢作業(yè)切換到更加穩(wěn)定的bootstrap模式,從而避免由估計(jì)失效引起的全局?jǐn)?shù)據(jù)掃描,優(yōu)化整體執(zhí)行性能。
為了實(shí)現(xiàn)上述目的,本發(fā)明采用以下技術(shù)方案:
一種云計(jì)算環(huán)境下的混合近似查詢方法,其執(zhí)行過程依賴于以下四個(gè)核心模塊:SQL查詢接口、CLT-based在線聚集執(zhí)行模式、bootstrap-based近似查詢模式以及近似查詢模式的動態(tài)切換機(jī)制。
通過上述四個(gè)核心模塊的協(xié)調(diào)工作可以實(shí)現(xiàn)云計(jì)算環(huán)境下的混合近似查詢,其執(zhí)行步驟如下:
1)由SQL查詢接口實(shí)現(xiàn)對查詢語句Q的信息抽取,基于Q的查詢謂詞及其涉及到的輸入數(shù)據(jù)形成針對查詢Q的標(biāo)準(zhǔn)化MapReduce輸入?yún)?shù)。
2)若查詢Q為單表查詢,則啟動一個(gè)MapReduce程序并配置Q的標(biāo)準(zhǔn)化輸入?yún)?shù),并以CLT-based在線聚集執(zhí)行模式進(jìn)行查詢處理,若查詢Q為多表查詢,則啟動兩個(gè)MapReduce程序并配置Q的標(biāo)準(zhǔn)化輸入?yún)?shù),并以CLT-based在線聚集執(zhí)行模式進(jìn)行查詢處理。
3)在上述MapReduce程序執(zhí)行過程中實(shí)時(shí)計(jì)算CLT-based在線聚集執(zhí)行模式的估計(jì)失效概率,并據(jù)此動態(tài)觸發(fā)近似查詢模式的切換機(jī)制,實(shí)現(xiàn)從CLT-based在線聚集執(zhí)行模式向bootstrap-based近似查詢模式的動態(tài)轉(zhuǎn)換,避免由估計(jì)失效引起的性能下降。
4)將上述MapReduce程序處理得到的結(jié)果傳輸至SQL查詢接口向用戶進(jìn)行展示。
所述步驟3)中,給定任意一組通過無放回采樣方法獲取的隨機(jī)樣本其中樣本的下標(biāo)Li表示S中第i個(gè)樣本在數(shù)據(jù)集R中的位置。由于采用無放回方式,因此上述樣本集S滿足以下特性:針對所有樣本,若i≠j則有Li≠Lj,即S中所有樣本均是唯一的(僅在樣本集中出現(xiàn)一次)。而采用有放回方式獲取隨機(jī)樣本很難保證樣本數(shù)據(jù)的唯一性,任一樣本均有可能重復(fù)出現(xiàn)在樣本集S中。因此,若要使得無放回采樣獲取的隨機(jī)樣本集S可被視為等同于有放回采樣獲取的隨機(jī)樣本,則必須保證有放回采樣獲取上述樣本集S的概率相對較大。否則,樣本集S不能被看作是有放回采樣的一種常態(tài)結(jié)果,而作為無放回采樣常態(tài)結(jié)果的樣本集S更不可能被看作等同于有放回采樣的一種非常態(tài)結(jié)果(即兩種采樣結(jié)果之間不存在近似關(guān)系)。基于上述分析可知,若要滿足樣本無偏性的等概率采集特性,必須提高樣本集S作為有放回采樣結(jié)果的概率。而通過有放回采樣方法采集n個(gè)(具有唯一性)樣本的概率可以按如下公式計(jì)算,其中m表示數(shù)據(jù)集R的數(shù)據(jù)總量。
式中m表示數(shù)據(jù)集R的數(shù)據(jù)總量,n為樣本中包含的元組數(shù)量。
給定上述有放回采樣獲取n個(gè)唯一樣本的概率Pwith,則其與在線聚集估計(jì)失效概率Pf之間的內(nèi)在聯(lián)系可簡單概括為以下兩點(diǎn):1)隨著Pwith的不斷降低Pf不斷增大,這主要是因?yàn)檩^小的Pwith意味著有放回采樣獲取n個(gè)唯一樣本的可能性較低,即無法以較高的概率將無放回采樣結(jié)果近似的看作等同于有放回采樣結(jié)果,從而導(dǎo)致估計(jì)失效概率升高;2)當(dāng)Pwith無限趨近于0時(shí),Pf也無限趨近于100%,這主要體現(xiàn)了極限情況下兩個(gè)概率之間的必然聯(lián)系,即有放回采樣無法獲取n個(gè)唯一樣本意味著無放回采樣結(jié)果無法等同于有放回采樣結(jié)果,從而無法保證樣本無偏性致使估計(jì)失效概率為100%。綜上所述,Pwith和Pf之間存在著某種內(nèi)在聯(lián)系。
為了更好的獲取Pwith和Pf之間的映射關(guān)系f,以刻畫兩者之間的內(nèi)在聯(lián)系,本發(fā)明根據(jù)CLT-based在線聚集執(zhí)行模式所具有的平緩性、收斂性以及差異性等特征,并結(jié)合概率Pwith計(jì)算相應(yīng)的近似估計(jì)失效概率Pf,計(jì)算公式如下:
式中參數(shù)μ、s以及λ分別為平緩度參數(shù)、收斂性參數(shù)以及傾斜度參數(shù)。
平緩度參數(shù)μ的作用是控制失效概率Pf在Pwith具有較大取值時(shí)具有較低且平緩的增長趨勢。平緩度控制參數(shù)取值越大則表示Pf在初始階段增長越平緩,意味著在在線聚集執(zhí)行初期估計(jì)失效發(fā)生的概率相對較小。
收斂性參數(shù)λ的作用是保證失效概率Pf在Pwith→0時(shí)無限趨近于100%,意味著樣本集無法保證無偏性時(shí)具有極高的估計(jì)失效概率。
傾斜度參數(shù)s的作用是將數(shù)據(jù)分布的傾斜特性引入衰減函數(shù),使得對估計(jì)失效概率的計(jì)算更為精準(zhǔn)。傾斜度參數(shù)s的取值范圍是(0,1],s=1表示均勻數(shù)據(jù)分布,而s取值越小則表示數(shù)據(jù)分布的傾斜程度越高。
按照概率Pf實(shí)現(xiàn)近似查詢方法的動態(tài)切換,即CLT-based在線聚集執(zhí)行模式在其執(zhí)行過程中以Pf的概率觸發(fā)bootstrap-based近似查詢模式,Pf越大表示越需要切換查詢模式且切換成功的可能性越大。
所述步驟3)中提出的在線聚集估計(jì)失效概率模型共包含三個(gè)重要參數(shù),為了保證該估計(jì)失效概率模型具有較好的性能就需要對上述三個(gè)重要參數(shù)進(jìn)行有效配置。具體配置過程如下:
首先,針對收斂性參數(shù)λ,必須保證失效概率Pf在Pwith→0時(shí)無限趨近于100%。為了設(shè)置合適的收斂性參數(shù)λ,首先將傾斜度參數(shù)s設(shè)為1并設(shè)置一個(gè)足夠大的平緩度參數(shù)以盡可能的擴(kuò)大平緩度對收斂性的影響(實(shí)際測試中發(fā)現(xiàn)μ=10即可滿足應(yīng)用需求)。其次,設(shè)定λ的測試間隔為0.01(即每次測試后需要對λ取值累加0.01形成新的λ),并針對每一個(gè)λ為其計(jì)算給定Pwith(實(shí)際測試中發(fā)現(xiàn)Pwith=0.01即可滿足應(yīng)用需求)的估計(jì)失效概率Pf直至Pf≥ε,其中ε為一個(gè)逼近100%的取值(設(shè)定ε為98%即可滿足實(shí)際需求)。通過上述方法確定的參數(shù)λ可以保證其針對較大的μ具有良好的收斂性,同時(shí)這種收斂性也可以很好的保證所有較小的μ同樣具有良好收斂性即因此可以認(rèn)為通過上述方法獲取的參數(shù)λ具有較好的穩(wěn)定性。
而針對平緩度參數(shù)μ,需要找到合適的取值使得估計(jì)失效概率的變化趨勢盡可能符合在線聚集的實(shí)際執(zhí)行規(guī)律,即保證動態(tài)切換機(jī)制的觸發(fā)既不過于保守也不過于激進(jìn)。給定兩個(gè)平緩度參數(shù)μi和μj以及估計(jì)失效概率Pf,可以通過逆函數(shù)f-1(Pf,μ,λ)計(jì)算相應(yīng)的失效概率Pwith(i)和Pwith(j)。若有μi>μj則有Pwith(i)<Pwith(j),表明針對參數(shù)μi的動態(tài)切換較之參數(shù)μj更為保守。保守的動態(tài)切換會導(dǎo)致一定程度的失效查詢漏判,造成過多不必要的在線聚集執(zhí)行開銷,而激進(jìn)的動態(tài)切換會導(dǎo)致失效查詢的誤判,造成一部分在線聚集查詢被過早的切換到bootstrap模式,從而增加了更多的近似估計(jì)開銷。在實(shí)際執(zhí)行過程中,由于bootstrap近似查詢模式具有更高的執(zhí)行開銷,從而導(dǎo)致誤判引起的性能衰減較之漏判相對更高?;诖?,首先給定傾斜度參數(shù)s=1并設(shè)定優(yōu)化的收斂性參數(shù)λ(設(shè)置為上文方法確定的最優(yōu)取值),其次選取較大的μ并按照降序?qū)γ恳粋€(gè)取值進(jìn)行實(shí)際測試,即在均勻分布的數(shù)據(jù)集中進(jìn)行實(shí)際的在線聚集運(yùn)行測試,當(dāng)相鄰兩個(gè)平緩度參數(shù)的取值μi和μj所對應(yīng)的整體執(zhí)行時(shí)間滿足時(shí)即可認(rèn)定μ=μi為較好的平緩度選擇,這主要是因?yàn)殡S著平緩度參數(shù)μ的不斷減小轉(zhuǎn)換機(jī)制愈加激進(jìn),由克服漏判帶來的性能提升逐漸被誤判所帶來的性能衰減所抵消,從而使得執(zhí)行性能的提升幅度逐漸降低直至出現(xiàn)完全衰減,因此可將出現(xiàn)性能拐點(diǎn)時(shí)的平緩度參數(shù)作為較優(yōu)取值。
最后針對傾斜度參數(shù)s,需要根據(jù)實(shí)際情況作出適當(dāng)調(diào)整以滿足不同需求,本發(fā)明設(shè)置其中z為Zipf分布中控制數(shù)據(jù)傾斜度的參數(shù)。
所述步驟3)中提出的混合近似查詢動態(tài)切換機(jī)制,其性能具有一個(gè)重要評測指標(biāo)即誤判率,表示誤將一個(gè)CLT-based在線聚集執(zhí)行模式的查詢切換為bootstrap模式的概率,如何降低誤判率是保證動態(tài)切換機(jī)制有效性的關(guān)鍵。為此,本發(fā)明提出漸進(jìn)近似估計(jì)方法以解決上述問題。
一個(gè)直觀的解決思路是設(shè)置較小的采樣粒度△S(每一輪采集△S個(gè)樣本),增加在線聚集的近似估計(jì)次數(shù),從而保證執(zhí)行初期一旦采集到高質(zhì)量樣本集也能以較高的概率被檢測到,即通過增加無偏性的判定次數(shù)捕捉滿足無偏性的樣本集合。通過設(shè)定較小的△S可以在一定程度上減少在線聚集獲取有效估計(jì)結(jié)果所需的樣本量,提高了在線聚集的執(zhí)行性能。
然而較小的△S也會導(dǎo)致更多的近似估計(jì)次數(shù),增加了額外的近似估計(jì)開銷,一定程度上抵消了由較小采樣粒度帶來的性能提升。針對這個(gè)問題,本發(fā)明提出了一種漸進(jìn)近似估計(jì)方法,通過修改每一輪近似估計(jì)的樣本需求量在一定程度上增加近似估計(jì)次數(shù),以期在盡早完成在線聚集查詢的同時(shí)降低其額外的近似估計(jì)開銷。
漸進(jìn)近似估計(jì)的核心思想可概括如下:1)首先,選取一個(gè)特定大小的樣本量n作為近似估計(jì)周期;2)其次,將近似估計(jì)周期n劃分成l個(gè)不等大小的子區(qū)間且每個(gè)子區(qū)間內(nèi)包含ni個(gè)樣本量(劃分方式上式所示),表示在線聚集的第i輪近似估計(jì)需要采集ni個(gè)樣本即△Si=ni;3)隨后,在第i輪近似估計(jì)中對采集到的△Si個(gè)樣本進(jìn)行統(tǒng)計(jì)量計(jì)算得到結(jié)果E(△Si),并基于E(△Si)計(jì)算相應(yīng)的近似估計(jì)結(jié)果。若不符合用戶精度需求,則擴(kuò)大樣本量為△Si+1并計(jì)算統(tǒng)計(jì)量E(△Si+1),將其與前一輪統(tǒng)計(jì)量結(jié)果E(△Si)進(jìn)行整合一同進(jìn)行本輪近似估計(jì),直至近似結(jié)果滿足用戶精度需求為止;4)最后,當(dāng)獲取的總樣本量達(dá)到近似估計(jì)周期n時(shí),則重啟一個(gè)新的近似估計(jì)周期并重復(fù)上述1)~3)步操作。
本發(fā)明的有益效果:
1)本發(fā)明首次提出基于MapRedcue框架的云計(jì)算環(huán)境混合近似查詢方法,將兩種基本近似查詢方法進(jìn)行有機(jī)融合,解決了在線聚集估計(jì)失效的問題,為近似查詢領(lǐng)域的研究提供了新的研究思路。
2)本發(fā)明提出在線聚集估計(jì)失效概率模型,可適應(yīng)不同數(shù)據(jù)分布特征,提供有效的在線聚集估計(jì)失效預(yù)測功能,并據(jù)此提出動態(tài)切換機(jī)制,有效避免了由估計(jì)失效引起的性能衰退,彌補(bǔ)了在線聚集方法的先天缺陷并大幅提升了近似查詢執(zhí)行性能。
3)本發(fā)明在云計(jì)算環(huán)境下通過MapReduce程序執(zhí)行查詢作業(yè),并可實(shí)時(shí)地向用戶提供具有精度標(biāo)識的查詢結(jié)果反饋,用戶可實(shí)現(xiàn)對查詢作業(yè)的實(shí)時(shí)監(jiān)控并根據(jù)近似查詢結(jié)果自行決定是否提早終止查詢過程,從而為節(jié)省云計(jì)算資源開銷提供可能?;谏鲜鰞?yōu)點(diǎn),本發(fā)明可廣泛應(yīng)用于云計(jì)算環(huán)境中。
附圖說明
圖1為混合近似查詢方法的系統(tǒng)架構(gòu)圖。
圖2為單表查詢的MapReduce流程圖。
圖3為多表查詢的MapReduce流程圖。
具體實(shí)施方式
為了對本發(fā)明的技術(shù)特征、目的和效果有更加清楚的理解,先對照附圖詳細(xì)說明本發(fā)明的具體實(shí)施方式,下述具體實(shí)施方式以及附圖,應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用于解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明系統(tǒng)架構(gòu),如圖1所示,包含四個(gè)主要功能模塊:SQL查詢接口、CLT-based在線聚集執(zhí)行模式、bootstrap-based近似查詢模式以及近似查詢模式的動態(tài)切換機(jī)制。
SQL查詢接口負(fù)責(zé)接收用戶提交的查詢作業(yè),并對查詢作業(yè)進(jìn)行解析,基于查詢作業(yè)的查詢謂詞、輸入數(shù)據(jù)以及查詢類型等信息實(shí)現(xiàn)對查詢作業(yè)的查詢信息抽取,形成針對該查詢作業(yè)的標(biāo)準(zhǔn)化MapReduce輸入?yún)?shù);給定一組從HDFS獲取的隨機(jī)樣本S,CLT-based在線聚集執(zhí)行模式的功能是將基于中心極限定理實(shí)現(xiàn)對查詢結(jié)果的近似估計(jì)。若近似結(jié)果不滿足用戶精度需求則擴(kuò)大樣本量形成新的樣本集S′=S+△S,并對其重復(fù)上述近似估計(jì)過程完成結(jié)果的精度更新;bootstrap模式的功能是對采集到的隨機(jī)樣本集合S進(jìn)行有放回的重采樣形成B組大小相同(均為|S|)的新樣本。并對這B組新樣本分別進(jìn)行近似估計(jì)得到對查詢結(jié)果的B組估計(jì)值,通過對這B組估計(jì)值的近似估計(jì)得到最終的近似查詢結(jié)果。若近似結(jié)果不滿足用戶精度需求則擴(kuò)大樣本量形成新的樣本集S′=S+△S,并對其重復(fù)上述近似估計(jì)過程完成結(jié)果的精度更新;第三,混合近似查詢方法的動態(tài)切換機(jī)制則負(fù)責(zé)實(shí)時(shí)計(jì)算CLT-based在線聚集執(zhí)行模式出現(xiàn)估計(jì)失效的概率,當(dāng)失效概率達(dá)到一定閾值時(shí)觸發(fā)動態(tài)切換機(jī)制將失效查詢切換到bootstrap模式下進(jìn)行進(jìn)一步處理,避免不必要的全局?jǐn)?shù)據(jù)掃描。
首先針對單表查詢介紹如何基于MapReduce框架實(shí)現(xiàn)支持動態(tài)切換機(jī)制的在線聚集基本功能。給定一個(gè)單表查詢,Map函數(shù)負(fù)責(zé)計(jì)算估計(jì)失效概率Pf并根據(jù)Pf進(jìn)行查詢模式的動態(tài)切換,并根據(jù)不同查詢模式的實(shí)際需求實(shí)現(xiàn)樣本統(tǒng)計(jì)量計(jì)算,將每一輪統(tǒng)計(jì)量計(jì)算結(jié)果作為Reduce函數(shù)的輸入數(shù)據(jù)。單表查詢的Map函數(shù)如算法1所示。
首先,Map函數(shù)通過重寫MapReduceBase基類中的configure函數(shù)加載全局變量sInfo和eInfo以支持后續(xù)統(tǒng)計(jì)量計(jì)算(第4~5行)。隨后,針對每一個(gè)到達(dá)的數(shù)據(jù)key/value對<ki,vi>,將其加入樣本集ΔS(第7行),當(dāng)樣本數(shù)量達(dá)到sInfo中指定的單輪采集閾值時(shí)觸發(fā)動態(tài)切換機(jī)制進(jìn)行估計(jì)失效概率的計(jì)算(第8~9行)。若無需切換查詢機(jī)制則繼續(xù)采用在線聚集查詢模式進(jìn)行統(tǒng)計(jì)量計(jì)算,并以當(dāng)前查詢ID為key值以查詢模式、統(tǒng)計(jì)量結(jié)果和當(dāng)前Map任務(wù)ID為組合鍵值形成key/value對作為后續(xù)Reduce函數(shù)的輸入數(shù)據(jù)(第10~13行)。若需要切換查詢機(jī)制則使用bootstrap近似查詢模式進(jìn)行統(tǒng)計(jì)量計(jì)算,首先對樣本集ΔS進(jìn)行有放回重復(fù)采樣獲取多組新樣本加入到樣本集合RSΔS中,進(jìn)而針對RSΔS中的多組新樣本分別進(jìn)行統(tǒng)計(jì)量計(jì)算并將結(jié)果存入統(tǒng)計(jì)量集合statsSet中,最終以當(dāng)前查詢ID為key值以查詢模式、統(tǒng)計(jì)量集合和當(dāng)前Map任務(wù)ID為組合鍵值形成key/value對作為后續(xù)Reduce函數(shù)的輸入數(shù)據(jù)(第15~19行)。
單表查詢的Reduce函數(shù)負(fù)責(zé)接收來自同一查詢Q的所有Map輸出數(shù)據(jù),并對不同Map任務(wù)的統(tǒng)計(jì)量進(jìn)行匯總處理形成最終的全局統(tǒng)計(jì)量,并根據(jù)eInfo中的估計(jì)參數(shù)對全局統(tǒng)計(jì)量進(jìn)行近似估計(jì),并進(jìn)行精度判斷。單表查詢的Reduce函數(shù)如算法2所示。
首先,獲取全局變量eInfo(第2行)。隨后,針對每一組鍵值序列values進(jìn)行局部統(tǒng)計(jì)量的分類存儲,將不同Map任務(wù)的輸出結(jié)果寫入采集容器container中,container為每個(gè)Map任務(wù)開辟獨(dú)立的存儲空間記錄各個(gè)任務(wù)的每一輪局部統(tǒng)計(jì)量(第4~5行)。當(dāng)containerr中各個(gè)Map任務(wù)的存儲空間均不為空(即采集到來自于所有Map任務(wù)的輸出結(jié)果)且為在線聚集查詢模式時(shí),觸發(fā)局部統(tǒng)計(jì)量的匯總處理形成全局統(tǒng)計(jì)量,并根據(jù)全局統(tǒng)計(jì)量計(jì)算近似查詢結(jié)果(第6~8行)。最后,根據(jù)近似估計(jì)結(jié)果、全局統(tǒng)計(jì)量以及eInfo中的置信度及誤差率等估計(jì)參數(shù)進(jìn)行近似結(jié)果的精度計(jì)算,若滿足查詢精度需求則以ki即Q.qID為key值而以近似估計(jì)結(jié)果和精度狀態(tài)作為組合鍵值形成key/value對返回用戶,否則僅以近似估計(jì)結(jié)果作為鍵值形成key/value對(第9~13行)。當(dāng)containerr中各個(gè)Map任務(wù)的存儲空間均不為空(即采集到來自于所有Map任務(wù)的輸出結(jié)果)且為bootstrap近似查詢模式時(shí),觸發(fā)局部統(tǒng)計(jì)量集合的匯總處理形成全局統(tǒng)計(jì)量集合,并根據(jù)全局統(tǒng)計(jì)量集合計(jì)算近似查詢結(jié)果(第16~18行)。最后,根據(jù)近似估計(jì)結(jié)果、全局統(tǒng)計(jì)量集合以及eInfo中的置信度及誤差率等估計(jì)參數(shù)進(jìn)行近似結(jié)果的精度計(jì)算,若滿足查詢精度需求則以ki即Q.qID為key值而以近似估計(jì)結(jié)果和精度狀態(tài)作為組合鍵值形成key/value對返回用戶,否則僅以近似估計(jì)結(jié)果作為鍵值形成key/value對(第19~23行)。
其次針對多表查詢介紹如何基于MapReduce框架實(shí)現(xiàn)支持動態(tài)切換機(jī)制的在線聚集基本功能。給定一個(gè)多表查詢涉及兩個(gè)數(shù)據(jù)集R和S,本文利用兩個(gè)MapReduce作業(yè)實(shí)現(xiàn)近似查詢結(jié)果的計(jì)算。第一個(gè)作業(yè)基于repartition join方法對兩個(gè)數(shù)據(jù)集進(jìn)行數(shù)據(jù)過濾與重劃分,其Map函數(shù)與算法1類似,但存在兩點(diǎn)不同:一是多表查詢的Map函數(shù)僅僅負(fù)責(zé)從數(shù)據(jù)集R和S中獲取樣本數(shù)據(jù)而不需要對樣本集進(jìn)行統(tǒng)計(jì)量計(jì)算,這主要是由于連接操作的統(tǒng)計(jì)量計(jì)算涉及到兩組數(shù)據(jù)的連接結(jié)果;二是Map函數(shù)輸出結(jié)果的key/value對需要重構(gòu)以滿足repartition join要求,在鍵值中增加變量rTag用于表示樣本來自哪一個(gè)數(shù)據(jù)集。而第一個(gè)作業(yè)的Reduce函數(shù)接收來自各個(gè)Map任務(wù)的樣本數(shù)據(jù)并采用ripple join方式實(shí)現(xiàn)對來自R和S的樣本集進(jìn)行連接運(yùn)算,并根據(jù)查詢模式的類型對運(yùn)算結(jié)果進(jìn)行相應(yīng)的統(tǒng)計(jì)量計(jì)算與近似估計(jì)。針對第二個(gè)作業(yè),其Map函數(shù)僅根據(jù)查詢ID將近似查詢結(jié)果分發(fā)到相應(yīng)的Reduce任務(wù),并通過Reduce函數(shù)實(shí)現(xiàn)對近似結(jié)果的精度判斷。
多表查詢第一個(gè)作業(yè)的Reduce函數(shù)如算法3所示。首先,需要獲取變量sInfo和eInfo(第1~2行)。隨后,對每一組鍵值序列values進(jìn)行樣本數(shù)據(jù)的分類(第5行),并通過ripple join方法計(jì)算連接數(shù)據(jù)集,同時(shí)計(jì)算該數(shù)據(jù)集的相關(guān)統(tǒng)計(jì)量(第6行)。若查詢模式為在線聚集,則觸發(fā)局部統(tǒng)計(jì)量的匯總處理形成全局統(tǒng)計(jì)量,并根據(jù)全局統(tǒng)計(jì)量計(jì)算近似查詢結(jié)果(第7~10行)。若查詢模式為bootstrap近似查詢,則對樣本集joinSet進(jìn)行有放回重復(fù)采樣獲取多組新樣本加入到樣本集合RSΔS中,進(jìn)而針對RSΔS中的多組新樣本分別進(jìn)行統(tǒng)計(jì)量計(jì)算并將結(jié)果存入統(tǒng)計(jì)量集合statsSet中(第13~15行)。
多表查詢第二個(gè)作業(yè)的Reduce函數(shù)如算法4所示。首先,獲取全局變量eInfo(第1行)。隨后,針對每一組鍵值序列values進(jìn)行局部計(jì)算結(jié)果(Map任務(wù)的輸出結(jié)果包括近似估計(jì)結(jié)果和相應(yīng)統(tǒng)計(jì)量)的分類存儲,將不同Map任務(wù)的輸出結(jié)果寫入采集容器container中,container為每個(gè)Map任務(wù)開辟獨(dú)立的存儲空間記錄各個(gè)任務(wù)的每一輪輸出結(jié)果(第4行)。當(dāng)containerr中各個(gè)Map任務(wù)的存儲空間均不為空(即采集到來自于所有Map任務(wù)的輸出結(jié)果)且為在線聚集查詢模式時(shí),觸發(fā)近似估計(jì)結(jié)果的匯總處理形成最終的近似估計(jì)結(jié)果(第5~6行)。最后,根據(jù)近似估計(jì)結(jié)果、全局統(tǒng)計(jì)量以及eInfo中的置信度及誤差率等估計(jì)參數(shù)進(jìn)行近似結(jié)果的精度計(jì)算,并返回相應(yīng)結(jié)果(第7~11行)。當(dāng)containerr中各個(gè)Map任務(wù)的存儲空間均不為空(即采集到來自于所有Map任務(wù)的輸出結(jié)果)且為bootstrap近似查詢模式時(shí),觸發(fā)局部統(tǒng)計(jì)量集合的匯總處理形成全局統(tǒng)計(jì)量集合,并根據(jù)全局統(tǒng)計(jì)量集合計(jì)算近似查詢結(jié)果(第14~16行)。最后,根據(jù)近似估計(jì)結(jié)果、全局統(tǒng)計(jì)量集合以及eInfo中的置信度及誤差率等估計(jì)參數(shù)進(jìn)行近似結(jié)果的精度計(jì)算,并返回相應(yīng)結(jié)果(第17~21行)。