一種基于hadoop平臺(tái)的事實(shí)并行處理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于HADOOP平臺(tái)下的分布式ETL過程中事實(shí)并行處理方法。
【背景技術(shù)】
[0002]在數(shù)據(jù)倉(cāng)庫(kù)領(lǐng)域,數(shù)據(jù)抽取、轉(zhuǎn)換和加載(Extract-Transform-Load,ETL)過程主要負(fù)責(zé)從不同的數(shù)據(jù)源收集數(shù)據(jù),按照用戶定義的業(yè)務(wù)規(guī)則和需求,對(duì)收集的數(shù)據(jù)集進(jìn)行轉(zhuǎn)換和清洗,最后按照目標(biāo)數(shù)據(jù)倉(cāng)庫(kù)的結(jié)構(gòu)加載到數(shù)據(jù)倉(cāng)庫(kù)中。如今,傳統(tǒng)的ETL技術(shù)正面臨著信息爆炸的新挑戰(zhàn),比如,一個(gè)企業(yè)每天收集幾百GB的數(shù)據(jù)進(jìn)行處理和分析是相當(dāng)普遍的。但是,如此巨大的數(shù)據(jù)量將使傳統(tǒng)的ETL方法極度的消耗時(shí)間,而且用戶要求處理數(shù)據(jù)的時(shí)間窗口又比較短。
[0003]因此,為了能夠快速適應(yīng)變化的業(yè)務(wù)環(huán)境和客戶需求,并行計(jì)算技術(shù)的使用是獲取最佳性能和高擴(kuò)展性的關(guān)鍵所在。近幾年來,在密集型數(shù)據(jù)領(lǐng)域,新穎的云計(jì)算技術(shù):MapReduce已經(jīng)廣泛用于并行計(jì)算。首先,MapReduce是Hadoop框架的一個(gè)通用編程模型,該模型可以向并行的ETL過程提供進(jìn)程間的通信,容錯(cuò),負(fù)載均衡和作業(yè)調(diào)度。另外,MapReduce也是一個(gè)非常流行的框架,本身是按照大規(guī)模密集型數(shù)據(jù)處理的站點(diǎn)標(biāo)準(zhǔn)而建立的。因而,Hadoop平臺(tái)下的分布式ETL處理很有應(yīng)用前景。事實(shí)處理是ETL過程的第二步,該過程主要涉及到引用維度表中代理鍵的查找。其中在維度建模理論中漸變維度主要有兩種類型,分為類型I和類型2。類型I的漸變維度采用的是直接對(duì)歷史進(jìn)行更新的方法,也就是說,不需要記錄維度的歷史變化情況;類型2的漸變維度采用的是更新-插入的方法,此類型的漸變維度需要額外添加兩個(gè)時(shí)間戳字段和一個(gè)標(biāo)識(shí)字段,其中兩個(gè)時(shí)間戳字段分別示維度的開始生效時(shí)間和失效時(shí)間,標(biāo)識(shí)字段表示維度是否為當(dāng)前正在使用。然而,在Hadoop平臺(tái)下,代理鍵的查找效率不是很高。因?yàn)槭聦?shí)的數(shù)據(jù)量比維度的數(shù)據(jù)量大幾個(gè)甚至幾十個(gè)數(shù)量級(jí),事實(shí)數(shù)據(jù)的處理是影響整個(gè)系統(tǒng)性能的關(guān)鍵點(diǎn),因而在Hadoop平臺(tái)下快速高效的查找代理鍵的方法是十分重要和必需的。
【發(fā)明內(nèi)容】
[0004]本發(fā)明的目的是提供一種基于Hadoop平臺(tái)下的事實(shí)并行處理實(shí)現(xiàn)策略,實(shí)現(xiàn)Hadoop平臺(tái)下的事實(shí)并行處理,提高事實(shí)的處理效率。
[0005]為了達(dá)到上述目的,本發(fā)明的技術(shù)方案是提供了一種基于HADOOP平臺(tái)的事實(shí)并行處理方法,其特征在于,包括以下步驟:
[0006]步驟1、將漸變維度數(shù)據(jù)集CacheDims存入本地緩存;
[0007]步驟2、初始化維度數(shù)據(jù)集Dims = Φ,同時(shí)從本地緩存中獲取漸變維度數(shù)據(jù)集CacheDims,轉(zhuǎn)步驟 3 ;
[0008]步驟3、如果漸變維度數(shù)據(jù)集CacheDims是類型2的漸變維度,則轉(zhuǎn)步驟4,否則轉(zhuǎn)步驟5 ;
[0009]步驟4、如果漸變維度數(shù)據(jù)集CacheDims未遍歷結(jié)束,則從中讀取一行記錄,記為Dim,從Dim獲取自然鍵NK、代理鍵SK、維度開始生效時(shí)間ST和維度開始失效時(shí)間ET,并存入維度數(shù)據(jù)集Dims中,繼續(xù)步驟4,否則轉(zhuǎn)步驟6 ;
[0010]步驟5、如果漸變維度數(shù)據(jù)集CacheDims未遍歷結(jié)束,則從中讀取一行記錄,記為Dim,從Dim獲取自然鍵NK和代理鍵SK,并存入維度數(shù)據(jù)集Dims中,繼續(xù)步驟5,否則轉(zhuǎn)步驟6 ;
[0011]步驟6、輸出維度數(shù)據(jù)集Dims ;
[0012]步驟7、如果維度數(shù)據(jù)集Dims中的值value不為空,則轉(zhuǎn)步驟8,否則結(jié)束;
[0013]步驟8、如果維度數(shù)據(jù)集Dims為類型2的漸變維度,則轉(zhuǎn)步驟9,否則轉(zhuǎn)步驟10 ;
[0014]步驟9、遍歷維度數(shù)據(jù)集Dims,將值value中相應(yīng)的字段和自然鍵NK、維度開始生效時(shí)間ST和維度開始失效時(shí)間ET進(jìn)行匹配,查找出正確的代理鍵SK,將代理鍵SK作為key’,值value中的度量值作為value’,轉(zhuǎn)步驟11 ;
[0015]步驟10、遍歷維度數(shù)據(jù)集Dims,將值value中相應(yīng)的字段和自然鍵NK進(jìn)行匹配,查找出正確的代理鍵SK,將代理鍵SK作為key’,值value中的度量值作為value’,轉(zhuǎn)步驟11 ;
[0016]步驟11、輸出< key’,value’ >。
[0017]本方法提供了一種基于Hadoop平臺(tái)下的事實(shí)并行處理方法,針對(duì)不同數(shù)據(jù)量的情況,提供了相應(yīng)的并行處理方法,使其能實(shí)現(xiàn)多路并行處理;同時(shí)也根據(jù)兩種不同類型的漸變維度表,分別考慮了不同的查找方法,從而實(shí)現(xiàn)了 Hadoop平臺(tái)下的事實(shí)并行處理,提高了事實(shí)處理的效率。
【具體實(shí)施方式】
[0018]為使本發(fā)明更明顯易懂,茲以優(yōu)選實(shí)施例作詳細(xì)說明如下。
[0019]本發(fā)明的技術(shù)方案提供了一種基于Hadoop平臺(tái)下的事實(shí)并行處理方法。由于事實(shí)數(shù)據(jù)量非常大,而且事實(shí)的處理主要是查找維度鍵,因此,為了加快事實(shí)的處理,本方法將從事實(shí)表查找維度鍵的方向著手,采用多路并行查找的方法提高事實(shí)的處理效率,同時(shí)針對(duì)不同類型的維度表,分別考慮了不同的查找方法。其具體步驟為:
[0020]步驟1、將漸變維度數(shù)據(jù)集CacheDims存入本地緩存;
[0021]步驟2、初始化維度數(shù)據(jù)集Dims = Φ,同時(shí)從本地緩存中獲取漸變維度數(shù)據(jù)集CacheDims,轉(zhuǎn)步驟 3 ;
[0022]步驟3、如果漸變維度數(shù)據(jù)集CacheDims是類型2的漸變維度,則轉(zhuǎn)步驟4,否則轉(zhuǎn)步驟5 ;
[0023]步驟4、如果漸變維度數(shù)據(jù)集CacheDims未遍歷結(jié)束,則從中讀取一行記錄,記為Dim,從Dim獲取自然鍵NK、代理鍵SK、維度開始生效時(shí)間ST和維度開始失效時(shí)間ET,并存入維度數(shù)據(jù)集Dims中,繼續(xù)步驟4,否則轉(zhuǎn)步驟6 ;
[0024]步驟5、如果漸變維度數(shù)據(jù)集CacheDims未遍歷結(jié)束,則從中讀取一行記錄,記為Dim,從Dim獲取自然鍵NK和代理鍵SK,并存入維度數(shù)據(jù)集Dims中,繼續(xù)步驟5,否則轉(zhuǎn)步驟6 ;
[0025]步驟6、輸出維度數(shù)據(jù)集Dims ;
[0026]步驟7、如果維度數(shù)據(jù)集Dims中的值value不為空,則轉(zhuǎn)步驟8,否則結(jié)束;
[0027]步驟8、如果維度數(shù)據(jù)集Dims為類型2的漸變維度,則轉(zhuǎn)步驟9,否則轉(zhuǎn)步驟10 ;
[0028]步驟9、遍歷維度數(shù)據(jù)集Dims,將值value中相應(yīng)的字段和自然鍵NK、維度開始生效時(shí)間ST和維度開始失效時(shí)間ET進(jìn)行匹配,查找出正確的代理鍵SK,將代理鍵SK作為key’,值value中的度量值作為value’,轉(zhuǎn)步驟11 ;
[0029]步驟10、遍歷維度數(shù)據(jù)集Dims,將值value中相應(yīng)的字段和自然鍵NK進(jìn)行匹配,查找出正確的代理鍵SK,將代理鍵SK作為key’,值value中的度量值作為value’,轉(zhuǎn)步驟11 ;
[0030]步驟11、輸出< key,,value,>。
[0031]步驟I的特點(diǎn)在于,可以根據(jù)不同的數(shù)據(jù)量情況選擇不同的處理方法:
[0032]第一種情況是當(dāng)漸變維度表的數(shù)據(jù)量比較小時(shí),可以完全裝入到內(nèi)存中,首先在MapReduce作業(yè)啟動(dòng)之前將類型I的漸變維度表的自然鍵和代理鍵或者類型2的漸變維度的自然鍵,代理鍵和兩個(gè)時(shí)間戳字段存儲(chǔ)到每一個(gè)Tasktracker的內(nèi)存中,然后進(jìn)行下面的查找過程;
[0033]第二種情況是當(dāng)漸變維度表的數(shù)據(jù)量比較大時(shí),導(dǎo)致其無法完全被存儲(chǔ)在主存中。本方法引入了分區(qū)的方法,該方法的主要思想是將漸變維度表與事實(shí)表按照相同的分區(qū)函數(shù)進(jìn)行分區(qū),經(jīng)過分區(qū)后,自然鍵相同的維度和事實(shí)數(shù)據(jù)將會(huì)出現(xiàn)在同一個(gè)分區(qū)中,從可以保證下面的并行查找過程。
【主權(quán)項(xiàng)】
1.一種基于HADOOP平臺(tái)的事實(shí)并行處理方法,其特征在于,包括以下步驟: 步驟1、將漸變維度數(shù)據(jù)集CacheDims存入本地緩存; 步驟2、初始化維度數(shù)據(jù)集Dims = Φ,同時(shí)從本地緩存中獲取漸變維度數(shù)據(jù)集CacheDims,轉(zhuǎn)步驟 3 ; 步驟3、如果漸變維度數(shù)據(jù)集CacheDims是類型2的漸變維度,則轉(zhuǎn)步驟4,否則轉(zhuǎn)步驟5 ; 步驟4、如果漸變維度數(shù)據(jù)集CacheDims未遍歷結(jié)束,則從中讀取一行記錄,記為Dim,從Dim獲取自然鍵NK、代理鍵SK、維度開始生效時(shí)間ST和維度開始失效時(shí)間ET,并存入維度數(shù)據(jù)集Dims中,繼續(xù)步驟4,否則轉(zhuǎn)步驟6 ; 步驟5、如果漸變維度數(shù)據(jù)集CacheDims未遍歷結(jié)束,則從中讀取一行記錄,記為Dim,從Dim獲取自然鍵NK和代理鍵SK,并存入維度數(shù)據(jù)集Dims中,繼續(xù)步驟5,否則轉(zhuǎn)步驟6 ;步驟6、輸出維度數(shù)據(jù)集Dims ; 步驟7、如果維度數(shù)據(jù)集Dims中的值value不為空,則轉(zhuǎn)步驟8,否則結(jié)束; 步驟8、如果維度數(shù)據(jù)集Dims為類型2的漸變維度,則轉(zhuǎn)步驟9,否則轉(zhuǎn)步驟10 ; 步驟9、遍歷維度數(shù)據(jù)集Dims,將值value中相應(yīng)的字段和自然鍵NK、維度開始生效時(shí)間ST和維度開始失效時(shí)間ET進(jìn)行匹配,查找出正確的代理鍵SK,將代理鍵SK作為key’,值value中的度量值作為value’,轉(zhuǎn)步驟11 ; 步驟10、遍歷維度數(shù)據(jù)集Dims,將值value中相應(yīng)的字段和自然鍵NK進(jìn)行匹配,查找出正確的代理鍵SK,將代理鍵SK作為key’,值value中的度量值作為value’,轉(zhuǎn)步驟11 ;步驟 11、輸出〈key’,value’ >o
【專利摘要】本發(fā)明提供了一種基于Hadoop平臺(tái)下的事實(shí)并行處理方法。由于事實(shí)數(shù)據(jù)量非常大,而且事實(shí)的處理主要是查找維度鍵,因此,為了加快事實(shí)的處理,本方法將從事實(shí)表查找維度鍵的方向著手,采用多路并行查找的方法提高事實(shí)的處理效率,同時(shí)針對(duì)不同類型的維度表,分別考慮了不同的查找方法。本發(fā)明針對(duì)不同數(shù)據(jù)量的情況,提供了相應(yīng)的并行處理方法,使其能實(shí)現(xiàn)多路并行處理;同時(shí)也根據(jù)兩種不同類型的漸變維度表,分別考慮了不同的查找方法,從而實(shí)現(xiàn)了Hadoop平臺(tái)下的事實(shí)并行處理,提高了事實(shí)處理的效率。
【IPC分類】G06F17-30
【公開號(hào)】CN104866562
【申請(qǐng)?zhí)枴緾N201510259107
【發(fā)明人】李繼云, 孫莉, 解書亮, 何剛, 丁祥武, 樂嘉錦, 施巍
【申請(qǐng)人】東華大學(xué)
【公開日】2015年8月26日
【申請(qǐng)日】2015年5月20日