欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于Spark云計算平臺的并行序列模式挖掘方法與流程

文檔序號:12915940閱讀:334來源:國知局
本發(fā)明屬于序列模式挖掘
技術(shù)領(lǐng)域
:,特別涉及一種基于spark云計算平臺的并行序列模式挖掘方法。
背景技術(shù)
::(1)序列模式挖掘技術(shù)[文獻1]最早提出序列模式挖掘的概念。序列模式挖掘就是挖掘序列數(shù)據(jù)庫中頻繁出現(xiàn)的有序事件或子序列。序列模式挖掘作為數(shù)據(jù)挖掘研究領(lǐng)域中重要的研究內(nèi)容之一,有著很廣泛的應(yīng)用需求,比如用戶購買行為分析、生物序列分析、出租車頻繁軌跡模式發(fā)現(xiàn)、人類移動行為模式分析。以下是序列模式挖掘中的一些術(shù)語的定義。定義1:對于一個集合i={ik,k=1,2,…,m}是一個包含m個不同項的集合,稱一個子集為一個項集。定義2:序列是由多個項集組成的集合,記為s=<s1,s2,…,sn>,其中某個具體的序列的長度等于序列包含項的數(shù)目。假定某個序列的長度為l,則稱此序列是l-序列。定義3:序列數(shù)據(jù)庫由<sid,s>組成,其中第一列sid表示序列號,第二列s表示序列的具體組成項集,每行表示一條序列記錄。定義4:對于序列s支持度定義為序列s在全局序列數(shù)據(jù)庫中出現(xiàn)的次數(shù)。已知最小支持度,如果序列s的支持度不低于最小支持度,那么序列s就是序列模式。長度為l的序列模式稱為l-序列模式。定義5:給定兩個序列α=<a1,a2,..an>,β=<b1,b2,…bm>(m≤n),β被稱為α的前綴當(dāng)且僅當(dāng)或am-bm=φ.序列γ=<am-bm,am+1,…,an>被稱為α相對于β的后綴。定義6:α是序列數(shù)據(jù)庫d中的一個序列模式,α的投影數(shù)據(jù)庫是以α為前綴的所有后綴的集合,記為s|α。[文獻2]提出了采用冗余候選模式的剪除策略和哈希樹來實現(xiàn)候選模式快速訪存的gsp算法。[文獻3]提出了基于垂直數(shù)據(jù)表示的spade算法。[文獻4]提出了基于投影數(shù)據(jù)庫的prefixspan算法。這些傳統(tǒng)的串行化算法雖然隨著數(shù)據(jù)結(jié)構(gòu)的優(yōu)化和挖掘機制的改變,在性能上有一定提高,但在面對大規(guī)模數(shù)據(jù)集時算法的處理速度往往達不到人們的要求。直到20世紀(jì)初,計算機硬件的急速發(fā)展極大的推動了并行序列模式挖掘算法的研究。國內(nèi)外學(xué)者相繼提出了各種分布式序列模式挖掘算法。[文獻5]提出了基于樹投影技術(shù)的兩種不同的并行化算法來解決分布內(nèi)存并行計算機的序列模式發(fā)現(xiàn)問題。[文獻6]提出了通過語法序列樹減少數(shù)據(jù)傳輸量的dmgsp算法。[文獻7]提出了快速挖掘全局最大頻繁項目集的fmgsp算法。但是由于分布式內(nèi)存系統(tǒng)或網(wǎng)格計算系統(tǒng)這些并行平臺并未提供容錯機制,所以在這些并行平臺上面實現(xiàn)的并行序列模式挖掘算法不具備容錯性。此外,在這些平臺上開發(fā)并行算法需要程序員具備大量的并行算法開發(fā)經(jīng)驗。云計算平臺的出現(xiàn)為實現(xiàn)并行算法提供了新的方法和途徑,使得高效低成本的從海量數(shù)據(jù)中進行序列模式挖掘成為可能。由apache基金會所開發(fā)的hadoop云計算平臺由于其開源性、可擴展性、高容錯性、使不具備豐富并行算法開發(fā)經(jīng)驗的程序員可以在hadoop平臺上輕松的開發(fā)并行程序,因此很多學(xué)者提出了基于hadoop平臺的并行序列模式挖掘算法。[文獻8]提出了基于hadoop的并行增量序列模式挖掘算法dpsp算法。[文獻9]提出了基于hadoop的并行閉序列挖掘算法-bide-mr算法。[文獻10]提出了基于hadoop的spamc算法。[文獻11]提出了基于hadoop的并行prefixspan算法。[文獻12]提出了基于事務(wù)分解思想的基于hadoop的prefixspan并行算法。[文獻13]提出了基于數(shù)據(jù)庫切分的基于hadoop的dgsp算法。文獻[8][9][10][11]提出的基于迭代式mapreduce任務(wù)的并行序列模式挖掘算法需要執(zhí)行多個需要從hdfs中讀取序列數(shù)據(jù)庫的mapreduce任務(wù),會產(chǎn)生很大的io開銷。文獻[12][13]提出的基于非迭代式mapreduce任務(wù)的并行序列模式挖掘算法并不能有效的將計算任務(wù)均勻的分派到各個計算節(jié)點,造成了負(fù)載不均衡。(2)map-reduce編程框架map-reduce是一種編程框架,采用了概念"map(映射)"和"reduce(歸約)",用于大規(guī)模數(shù)據(jù)集(大于1tb)的并行運算,在[文獻14]中提出。用戶只需編寫兩個稱作map和reduce的函數(shù)即可,系統(tǒng)能夠管理map或reduce并行任務(wù)的執(zhí)行以及任務(wù)之間的協(xié)調(diào),并且能夠處理上述某個任務(wù)失敗的情況,并且同時能夠保障對硬件故障的容錯性。基于map-reduce的計算過程如下:1)用戶程序中的map-reduce庫首先將輸入文件分成m個數(shù)據(jù)分片,每個分片的大小一般從16到64mb(用戶可以通過可選的參數(shù)來控制每個數(shù)據(jù)片段的大小),然后map-reduce庫在機群中創(chuàng)建大量的程序副本。2)這些程序副本有一個特殊的程序-主控程序,副本中其它的程序都是由主控程序分配任務(wù)的工作程序。有m個map任務(wù)和r個reduce任務(wù)將被分配,主控程序?qū)⒁粋€map任務(wù)或reduce任務(wù)分配給一個空閑的工作程序。3)被分配了map任務(wù)的工作程序讀取相關(guān)的輸入數(shù)據(jù)片段,從輸入的數(shù)據(jù)片段中解析出鍵-值(key,value)對,然后把鍵-值對傳遞給用戶自定義的map函數(shù),map函數(shù)將產(chǎn)生的中間臨時鍵-值對保存在本地內(nèi)存緩存中。4)緩存中的鍵-值對通過分區(qū)函數(shù)分成r個區(qū)域,之后周期性的寫入到本地磁盤上。緩存的鍵-值對在本地磁盤上的存儲位置將被回傳給主控程序,由主控程序負(fù)責(zé)把這些存儲位置再傳給被分配了reduce任務(wù)的工作程序。5)當(dāng)被分配了reduce任務(wù)的工作程序接收到主控程序發(fā)來的數(shù)據(jù)存儲位置信息后,使用遠程過程調(diào)用(remoteprocedurecalls)從被分配了map任務(wù)的工作程序所在主機的磁盤上讀取這些緩存數(shù)據(jù)。當(dāng)被分配了reduce任務(wù)的工作程序讀取了所有的中間數(shù)據(jù)后,通過對鍵進行排序后使得具有相同鍵的數(shù)據(jù)聚合在一起。由于許多不同的鍵會映射到相同的reduce任務(wù)上,因此必須進行排序。如果中間數(shù)據(jù)太大無法在內(nèi)存中完成排序,那么就要在外部進行排序。6)被分配了reduce任務(wù)的工作程序遍歷排序后的中間數(shù)據(jù),對于每一個唯一的中間鍵-值對,被分配了reduce任務(wù)的工作程序?qū)⑦@個鍵和它相關(guān)的中間值的集合傳遞給用戶自定義的reduce函數(shù)。reduce函數(shù)的輸出被追加到所屬分區(qū)的輸出文件。7)當(dāng)所有的map和reduce任務(wù)都完成之后,主控程序喚醒用戶程序。在這個時候,在用戶程序里的對map-reduce調(diào)用才返回。(3)spark云計算平臺spark是由ucberkeleyamp實驗室開發(fā)的開元通用并行云計算平臺,spark基于mapreduce思想實現(xiàn)的分布式計算,擁有hadoopmapreduce所具有的優(yōu)點;但是不同地方是運算中間輸出結(jié)果能存儲在內(nèi)存中,從而不在需要讀寫分布式文件系統(tǒng)(hdfs),因此spark能更好的運行數(shù)據(jù)挖掘與機器學(xué)習(xí)等需要迭代的mapreduce算法。spark啟用了內(nèi)存分布數(shù)據(jù)集,它可以提供交互式查詢,除此之外還可以將數(shù)據(jù)集緩存在內(nèi)存中,提高數(shù)據(jù)集讀寫速率。實現(xiàn)計算過程中的數(shù)據(jù)集的重用,優(yōu)化迭代工作負(fù)載。spark底層可使用多種分布式文件系統(tǒng)如hdfs文件系統(tǒng)存放數(shù)據(jù),不過更多的是與資源調(diào)度平臺mesos和yarn一起合作出現(xiàn)。rdd(彈性分布式數(shù)據(jù)集)是spark的核心,rdd是分布于各個計算節(jié)點存儲于內(nèi)存中的數(shù)據(jù)對象集合,rdd允許用戶在執(zhí)行多個查詢時顯式地將工作集緩存在內(nèi)存中,后續(xù)的查詢能夠重用工作集,這極大地提升了查詢速度。rdd分布在多個節(jié)點上,并可以對其進行并行處理。rdd是可擴展、彈性的,在運算過程中,內(nèi)存小于rdd時,可以轉(zhuǎn)存到磁盤上,確保內(nèi)存足夠繼續(xù)運算。rdd是已被分區(qū)、只讀的、不可變的并能夠被并行操作的數(shù)據(jù)集合,只能通過在其它rdd執(zhí)行確定的轉(zhuǎn)換操作(如map、join、filter和groupby)而創(chuàng)建,然而這些限制使得實現(xiàn)容錯的開銷很低。與分布式共享內(nèi)存系統(tǒng)需要付出高昂代價的檢查點和回滾不同,rdd通過lineage來重建丟失的分區(qū):一個rdd中包含了如何從其它rdd衍生所必需的相關(guān)信息,從而不需要檢查點操作就可以重構(gòu)丟失的數(shù)據(jù)分區(qū)。盡管rdd不是一個通用的共享內(nèi)存抽象,但卻具備了良好的描述能力、可伸縮性和可靠性,并能夠廣泛適用于數(shù)據(jù)并行類應(yīng)用。有關(guān)文獻:[文獻1]agrawalr,srikantr.miningsequentialpatterns:the11thinternationalconferenceondataengineering[c].taipei:ieeecomputersociety,1995:3-141.[文獻2]srikantr,agrawalr.miningsequentialpattern:generationsandperformanceimprovement[c]//proceedingsofthe5thinternationalconferenceextendingdatabasetechnology.avignon:lecturenotesincomputerscience,1996:.3-17.[文獻3]zakim.spade:anefficientalgorithmforminingfrequentsequences[j].machinelearning,2001.41(2):31-60.[文獻4]peij,hanj,pintoh.prefixspanminingsequentialpatternsefficientlybyprefix-projectedpatterngrowth[c]//proceedingsofthe17thinternationalconferenceondataengineering.washington,ieeetransactionsondataengineering,2004.16(1):1424-1440.[文獻5]gurainikv,gargn,vipink.paralleltreeprojectionalgorithmforsequencemining[c]//proceedingsofthe7thinternationaleuropeanconferenceonparallelprocessing.london,2001:310-320.[文獻6]龔振志,胡孔法,達慶利,張長海.dmgsp:一種快速分布式全局序列模式挖掘算法[j].東南大學(xué)學(xué)報,2007.16(04):574-579.[文獻7]zhangchanghai,hukongfa,liuhaidong.fmgsp:anefficientmethodofminingglobalsequentialpatterns[c].//proceedingsofthe4thinternationalconferenceonfuzzysystemsandknowledgediscovery.losalanitosieeecomputersociety.2007:761-765.[文獻8]j.huang,s.lin,m.chen,“dpsp:distributedprogressivesequentialpatternminingonthecloud,”lecturenotesincomputerscience,pp.27-34,2010.[文獻9]d.yu,w.wu,s.zheng,z.zhu,“bide-basedparallelminingoffrequentclosedsequenceswithmapreduce,”in:proceedingsofthe12thinternationalconferenceonalgorithmsandarchitecturesforparallelprocessing,pp.177-1862012.[文獻10]chun-chiehchen,chi-yaotseng,chi-yaotseng,“highlyscalablesequentialpatternminingbasedonmapreducemodelonthecloud,”in2013ieeeinternationalcongressonbigdata,pp.310–317,2013.[文獻11]p.n.sabrina,“miltiplemapreduceandderivativeprojecteddatabase:newapproachforsupportingprefixspanscalability,”ieee,pp.148-153,nov.2015.[文獻12]x.wang,“parallelsequentialpatternminingbytranscationdecompostion,”ieeefuzzysystemsandknowledgediscovery(fskd),2010seventhinternationalconferenceon,vol.4,pp.1746-1750.[文獻13]x.yu,j.liu,c.ma,b.li,“amapreducereinforeceddistributedsequentialpatternminingalgorithm,”algorithmsandarchitecturesforparallelprocessing,vol.9529,pp.183-197,dec.2015.[文獻14]jeffreydeanandsanjayghemawat.map-reduce:simplifieddataprocessingonlargecluster[c]//proceedingsofthe6thconferenceonsymposiumonoperatingsystemsdesignandimplementation.newyork:acmpress,2004:137-149.技術(shù)實現(xiàn)要素:為了解決串行化序列模式挖掘算法在處理海量數(shù)據(jù)時計算能力低效的問題和現(xiàn)有的基于hadoop的并行序列模式挖掘算法具有高io開銷和負(fù)載不平衡的問題,本發(fā)明提供了一種基于spark云計算平臺的并行序列模式挖掘方法。本發(fā)明所采用的技術(shù)方案是:一種基于spark云計算平臺的并行序列模式挖掘方法,其特征在于:包括數(shù)據(jù)庫切分、支持度計數(shù)和投影數(shù)據(jù)庫生成三步驟,且三步迭代執(zhí)行,直到?jīng)]有新的序列模式產(chǎn)生為止;所述數(shù)據(jù)庫切分,具體實現(xiàn)包括以下子步驟:步驟1.1:在第一次執(zhí)行時,將原始數(shù)據(jù)庫切分成相同大小的數(shù)據(jù)庫分片,使每個數(shù)據(jù)庫分片中的包含的序列個數(shù)近似相等;將數(shù)據(jù)庫分片從hdfs中導(dǎo)入rdd中,接下來的所有mapreduce任務(wù)從rdd中讀取數(shù)據(jù)庫分片或生成的序列模式,并將該任務(wù)生成的投影數(shù)據(jù)庫或序列模式存入rdd中;步驟1.2:在后續(xù)迭代執(zhí)行時,將投影數(shù)據(jù)庫切分成相同大小的數(shù)據(jù)庫分片,使每個數(shù)據(jù)庫分片中的包含的序列個數(shù)近似相等;將投影數(shù)據(jù)庫分片存入rdd中,接下來的所有mapreduce任務(wù)從rdd中讀取投影數(shù)據(jù)庫分片或生成的序列模式,并將該任務(wù)生成的投影數(shù)據(jù)庫或序列模式存入rdd中;所述支持度計數(shù),其具體實現(xiàn)包括以下子步驟:步驟2.1:在第一次執(zhí)行時,調(diào)用第一個flatmap函數(shù)從序列數(shù)據(jù)庫片段中讀取每條序列,其中序列以<longwritable偏移量,text序列>鍵值對的形式存儲;調(diào)用另一個flatmap函數(shù)將序列切分為項,產(chǎn)生<項,1>鍵值對;擁有相同鍵的鍵值對被合并傳遞給reduce節(jié)點,reduce節(jié)點調(diào)用reducebykey()函數(shù)計算<項,1>鍵值對的支持度,輸出支持度大于等于設(shè)定的最小支持度的鍵值對;這些鍵值對的鍵即為1-序列模式,值即為該1-序列模式的支持度計數(shù);刪除原始序列數(shù)據(jù)庫中的非1-序列模式,形成新的序列數(shù)據(jù)庫,后續(xù)的mapreduce任務(wù)都基于此新的序列數(shù)據(jù)庫進行操作;步驟2.2:在后續(xù)迭代執(zhí)行時,每一個map節(jié)點首先調(diào)用flatmap函數(shù)從投影數(shù)據(jù)庫片段si|α中讀取每一行后綴序列,然后再調(diào)用另一個flatmap函數(shù)將后綴序列中的第一項切分出來,將這一項b加入到前綴α后產(chǎn)生<α+b,1>鍵值對;擁有相同鍵的鍵值對被合并傳遞給reduce節(jié)點;最后每一個reduce節(jié)點調(diào)用reducebykey()函數(shù)計算<α+b,1>鍵值對的支持度,輸出支持度大于等于設(shè)定的最小支持度的鍵值對;所述投影數(shù)據(jù)庫生成,利用一個mapreduce任務(wù)為每個在支持度計數(shù)步中產(chǎn)生的序列模式生成相應(yīng)的投影數(shù)據(jù)庫;其具體實現(xiàn)包括以下子步驟:步驟3.1:每個map節(jié)點調(diào)用flatmap()函數(shù)讀取在之前的以α為前綴的投影數(shù)據(jù)庫中的后綴序列;步驟3.2:每個map函數(shù)計算前綴α′的后綴,以α為前綴的投影數(shù)據(jù)庫中的后綴序列中第一次出現(xiàn)前綴α′的后綴即為α′的后綴;其中α′是以α為前綴的序列模式;步驟3.3:將map節(jié)點產(chǎn)生的鍵值對傳遞給reduce節(jié)點,reduce節(jié)點對這些鍵值對不做任何的處理,生成最終的投影數(shù)據(jù)庫。本發(fā)明設(shè)計了合理的投影序列數(shù)據(jù)庫切分策略,最大限度的解決了負(fù)載不平衡的問題。在此基礎(chǔ)上根據(jù)mapreduce編程框架的特性,對原始prefixspan算法進行了并行化,利用spark云計算平臺的大規(guī)模并行計算能力提高了海量數(shù)據(jù)序列模式挖掘效率。本發(fā)明的技術(shù)方案具有簡單、快速的特點,能夠較好地提高序列模式挖掘的效率。附圖說明圖1為本發(fā)明實施例的流程圖;圖2為本發(fā)明實施例第一次執(zhí)行支持度計數(shù)步示意圖;圖3為本發(fā)明實施例第一次執(zhí)行投影數(shù)據(jù)庫生成步示意圖;圖4為本發(fā)明實施例第二次執(zhí)行支持度計數(shù)步示意圖;圖5為本發(fā)明實施例第二次執(zhí)行投影數(shù)據(jù)庫生成步示意圖;圖6為本發(fā)明實施例第三次執(zhí)行支持度計數(shù)步示意圖。具體實施方式為了便于本領(lǐng)域普通技術(shù)人員理解和實施本發(fā)明,下面結(jié)合附圖及實施例對本發(fā)明作進一步的詳細(xì)描述,應(yīng)當(dāng)理解,此處所描述的實施示例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明設(shè)計的基于spark云計算平臺的序列模式挖掘算法的流程見附圖1,所有步驟可由本領(lǐng)域技術(shù)人員采用計算機軟件技術(shù)實現(xiàn)流程自動運行。該方法主要包括三個步驟:數(shù)據(jù)庫切分步、支持度計數(shù)步和投影數(shù)據(jù)庫生成步。這三步迭代執(zhí)行,直到?jīng)]有新的序列模式產(chǎn)生。實施例具體實現(xiàn)過程如下:步驟1,數(shù)據(jù)庫切分;為了實現(xiàn)較好的負(fù)載平衡,在第一次執(zhí)行該步時,將原始數(shù)據(jù)庫切分成相同大小的數(shù)據(jù)庫分片(分片數(shù)最好與集群中map節(jié)點數(shù)相同),使每個數(shù)據(jù)庫分片中包含的序列近乎相等。為了減小io開銷并且充分的利用集群內(nèi)存,將這些數(shù)據(jù)庫分片從hdfs中導(dǎo)入rdd中,接下來的所有mapreduce任務(wù)從rdd中讀取數(shù)據(jù)庫分片、投影數(shù)據(jù)庫分片或生成的序列模式,并將該任務(wù)生成的投影數(shù)據(jù)庫或序列模式存入rdd中。本實施例在第一次執(zhí)行數(shù)據(jù)庫切分步時,設(shè)定將原始序列數(shù)據(jù)庫劃分為n=3個數(shù)據(jù)庫分片。原始序列數(shù)據(jù)庫內(nèi)容如下表1:表1序列號序列s1<(cd)(efg)>s2<h>s3<(ab)ac>s4<cg>s5<acgh>s6<ga>劃分得到的數(shù)據(jù)庫分片1、2、3分別如下表2、3、4:表2表3序列號序列s3<(ab)ac>s4<cg>表4序列號序列s5<acgh>s6<ga>步驟2,支持度計數(shù);在第一次執(zhí)行支持度計數(shù)步時,該步首先調(diào)用第一個flatmap函數(shù)從序列數(shù)據(jù)庫片段中讀取每條序列,其中序列以<longwritableoffset,textsequence>鍵值對的形式存儲。隨后調(diào)用另一個flatmap函數(shù)將序列切分為項,產(chǎn)生<項,1>鍵值對。擁有相同鍵的鍵值對被合并傳遞給reduce節(jié)點,reduce節(jié)點調(diào)用reducebykey()函數(shù)計算<項,1>鍵值對的支持度,輸出支持度大于等于設(shè)定的最小支持度的鍵值對。這些鍵值對的鍵即為1-序列模式,值即為該1-序列模式的支持度計數(shù)。然后刪除原始序列數(shù)據(jù)庫中的非1-序列模式,形成新的序列數(shù)據(jù)庫,后續(xù)的mapreduce任務(wù)都基于這個新的序列數(shù)據(jù)庫進行操作。實施例設(shè)定最小支持度為2,spark集群中包含3個map節(jié)點和2個reduce節(jié)點,第一次執(zhí)行支持度計數(shù)步的具體執(zhí)行過程參見圖2,map節(jié)點對數(shù)據(jù)庫分片1產(chǎn)生鍵值對結(jié)果如下表5:表5map節(jié)點對數(shù)據(jù)庫分片2產(chǎn)生鍵值對結(jié)果如下表6:表6輸出結(jié)果<a,1><b,1><a,1><c,1><c,1><h,1>map節(jié)點對數(shù)據(jù)庫分片3產(chǎn)生鍵值對結(jié)果如下表7:表7輸出結(jié)果<a,1><c,1><g,1><h,1><g,1><a,1>reduce節(jié)點合并具有相同的鍵的鍵值對,輸出支持度大于等于2的鍵值對的結(jié)果如下表8:表8序列模式支持度a3c4g4h2刪除原始序列數(shù)據(jù)庫中非1-序列模式后得到新的數(shù)據(jù)庫如下表9:表9序列號序列s1<cg>s2<h>s3<aac>s4<cg>s5<acgh>s6<ga>步驟3,投影數(shù)據(jù)庫生成;在這一步中,利用一個mapreduce任務(wù)為每個在支持度計數(shù)步中產(chǎn)生的序列模式生成相應(yīng)的投影數(shù)據(jù)庫。需要說明的是,一個前綴(如前綴<ac>)的后綴是之前的前綴(如前綴<a>)的后綴的子序列。所以對前綴α′的構(gòu)造無需掃描原始的序列數(shù)據(jù)庫,只需掃描α的投影數(shù)據(jù)庫即可,其中α′是以α為前綴的序列模式。在這個mapreduce任務(wù)中,每個map節(jié)點調(diào)用flatmap()函數(shù)讀取在之前的以α為前綴的投影數(shù)據(jù)庫中的后綴序列。然后每個map函數(shù)計算前綴α′的后綴,以α為前綴的投影數(shù)據(jù)庫中的后綴序列中第一次出現(xiàn)前綴α′的后綴即為α′的后綴。然后將map節(jié)點產(chǎn)生的鍵值對傳遞給reduce節(jié)點。reduce節(jié)點對這些鍵值對不做任何的處理,生成最終的投影數(shù)據(jù)庫。實施例,第一次執(zhí)行投影數(shù)據(jù)庫生成步的具體執(zhí)行過程參見圖3,map節(jié)點對數(shù)據(jù)庫分片1產(chǎn)生鍵值對結(jié)果如下表10:表10輸出結(jié)果<c,g>map節(jié)點對數(shù)據(jù)庫分片2產(chǎn)生鍵值對結(jié)果如下表11:表11輸出結(jié)果<a,ac><a,c><c,g>map節(jié)點對數(shù)據(jù)庫分片3產(chǎn)生鍵值對結(jié)果如下表12:表12輸出結(jié)果<a,cgh><c,gh><g,h><g,a>reduce節(jié)點對這些鍵值對不做任何的處理,生成最終的投影數(shù)據(jù)庫如下表13:表13前綴后綴c<g>a<ac>a<c>c<g>a<cgh>c<gh>g<h>g<a>在迭代執(zhí)行數(shù)據(jù)庫切分步時,為了實現(xiàn)較好的負(fù)載平衡,將投影數(shù)據(jù)庫切分成相同大小的數(shù)據(jù)庫分片(分片數(shù)最好與集群中map節(jié)點數(shù)相同),使每個數(shù)據(jù)庫分片中的包含的序列近乎相等。在第二次執(zhí)行數(shù)據(jù)庫切分步時,本實施例設(shè)定將表13的投影序列數(shù)據(jù)庫劃分為n=3個數(shù)據(jù)庫分片。劃分得到的數(shù)據(jù)庫分片1、2、3分別如下表14、15、16:表14前綴后綴c<g>a<ac>a<c>表15前綴后綴c<g>a<cgh>c<gh>表16前綴后綴g<h>g<a>在迭代執(zhí)行支持度計數(shù)步時,每一個map節(jié)點首先調(diào)用flatmap函數(shù)從投影數(shù)據(jù)庫片段si|α中讀取每一行后綴序列,然后再調(diào)用另一個flatmap函數(shù)將后綴序列中的第一項切分出來,然后將這一項b加入到前綴α后產(chǎn)生<α+b,1>鍵值對。然后擁有相同鍵的鍵值對被合并傳遞給reduce節(jié)點。最后每一個reduce節(jié)點調(diào)用reducebykey()函數(shù)計算<α+b,1>鍵值對的支持度,輸出支持度大于等于設(shè)定的最小支持度的鍵值對。本實施例第二次執(zhí)行支持度計數(shù)步的具體執(zhí)行過程參見圖4,map節(jié)點對數(shù)據(jù)庫分片1產(chǎn)生鍵值對結(jié)果如下表17:表17輸出結(jié)果<c,g><a,a><a,c>map節(jié)點對數(shù)據(jù)庫分片2產(chǎn)生鍵值對結(jié)果如下表18:表18輸出結(jié)果<c,g><a,c><c,g>map節(jié)點對數(shù)據(jù)庫分片3產(chǎn)生鍵值對結(jié)果如下表19:表19輸出結(jié)果<g,h><g,a>reduce節(jié)點合并具有相同的鍵的鍵值對,輸出支持度大于等于2的鍵值對的結(jié)果如下表20:表20序列模式支持度ac2cg3在迭代執(zhí)行投影數(shù)據(jù)庫生成步驟時,利用一個mapreduce任務(wù)為每個在支持度計數(shù)步中產(chǎn)生的序列模式生成相應(yīng)的投影數(shù)據(jù)庫。需要說明的是,一個前綴(如前綴<ac>)的后綴是之前的前綴(如前綴<a>)的后綴的子序列。所以對前綴α′的構(gòu)造無需掃描原始的序列數(shù)據(jù)庫,只需掃描α的投影數(shù)據(jù)庫即可,其中α′是以α為前綴的序列模式。在這個mapreduce任務(wù)中,每個map節(jié)點調(diào)用flatmap()函數(shù)讀取在之前的以α為前綴的投影數(shù)據(jù)庫中的后綴序列。然后每個map函數(shù)計算前綴α′的后綴,以α為前綴的投影數(shù)據(jù)庫中的后綴序列中第一次出現(xiàn)前綴α′的后綴即為α′的后綴。然后將map節(jié)點產(chǎn)生的鍵值對傳遞給reduce節(jié)點。reduce節(jié)點對這些鍵值對不做任何的處理,生成最終的投影數(shù)據(jù)庫。本實施例第二次執(zhí)行投影數(shù)據(jù)庫生成步的具體執(zhí)行過程參見圖5,map節(jié)點對數(shù)據(jù)庫分片1產(chǎn)生鍵值對結(jié)果如下表21:表21輸出結(jié)果<ac,gh>map節(jié)點對數(shù)據(jù)庫分片2產(chǎn)生鍵值對結(jié)果如下表22:表22輸出結(jié)果<cg,h>map節(jié)點對數(shù)據(jù)庫分片3沒有產(chǎn)生鍵值對。reduce節(jié)點對這些鍵值對不做任何的處理,生成最終的投影數(shù)據(jù)庫如下表23:表23前綴后綴ac<gh>cg<h>在第三次執(zhí)行數(shù)據(jù)庫切分步時,為了實現(xiàn)較好的負(fù)載平衡,將投影數(shù)據(jù)庫切分成相同大小的數(shù)據(jù)庫分片(分片數(shù)最好與集群中map節(jié)點數(shù)相同),使每個數(shù)據(jù)庫分片中的包含的序列近乎相等。在第三次執(zhí)行數(shù)據(jù)庫切分步時,本實施例設(shè)定將表23的投影序列數(shù)據(jù)庫劃分為n=2個數(shù)據(jù)庫分片。劃分得到的數(shù)據(jù)庫分片1、2分別如下表24、25:表24前綴后綴ac<gh>表25前綴后綴cg<h>在第三次執(zhí)行支持度計數(shù)步時,每一個map節(jié)點首先調(diào)用flatmap函數(shù)從投影數(shù)據(jù)庫片段si|α中讀取每一行序列(后綴),然后再調(diào)用另一個flatmap函數(shù)將序列中的每一項切分出來,然后將每一項b加入到前綴α后產(chǎn)生<α+b,1>鍵值對。然后擁有相同鍵的鍵值對被合并傳遞給reduce節(jié)點。最后每一個reduce節(jié)點調(diào)用reducebykey()函數(shù)計算<α+b,1>鍵值對的支持度,輸出支持度大于等于設(shè)定的最小支持度的鍵值對。本實施例第三次執(zhí)行支持度計數(shù)步的具體執(zhí)行過程參見圖6,map節(jié)點對數(shù)據(jù)庫分片1產(chǎn)生鍵值對結(jié)果如下表26:表26輸出結(jié)果<ac,g>map節(jié)點對數(shù)據(jù)庫分片2產(chǎn)生鍵值對結(jié)果如下表27:表27輸出結(jié)果<cg,h>reduce節(jié)點合并具有相同的鍵的鍵值對,輸出支持度大于等于2的鍵值對,發(fā)現(xiàn)所有的reduce節(jié)點沒有輸出,因此程序終止。本文中所描述的具體實施例僅僅是對本發(fā)明精神作舉例說明。本發(fā)明所屬
技術(shù)領(lǐng)域
:的技術(shù)人員可以對所描述的具體實施例做各種各樣的修改或補充或采用類似的方式替代,但并不會偏離本發(fā)明的精神或者超越所附權(quán)利要求書所定義的范圍。當(dāng)前第1頁12當(dāng)前第1頁12
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
隆安县| 盘锦市| 隆回县| 社会| 乡宁县| 山东| 女性| 同江市| 岳普湖县| 铜鼓县| 宜君县| 六枝特区| 鄂托克前旗| 竹北市| 高阳县| 云阳县| 镇原县| 安丘市| 丰顺县| 保靖县| 祁东县| 临海市| 兰坪| 客服| 综艺| 清水县| 芜湖县| 长岛县| 鄂温| 水富县| 平舆县| 安西县| 汉沽区| 阳曲县| 百色市| 富川| 嫩江县| 吴旗县| 疏勒县| 伽师县| 都匀市|