版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
大數(shù)據(jù)導(dǎo)論第三章CONTENTS目錄PART01大數(shù)據(jù)預(yù)處理概述PART02數(shù)據(jù)清洗方法PART03數(shù)據(jù)集成與轉(zhuǎn)換方法PART04數(shù)據(jù)削減PART05離散化和概念層次樹PART06ETL工具KettlePART07數(shù)據(jù)轉(zhuǎn)換工具SqoopPART08作業(yè)PART01大數(shù)據(jù)預(yù)處理概述大數(shù)據(jù)預(yù)處理負(fù)責(zé)將分散的、異構(gòu)數(shù)據(jù)源中的數(shù)據(jù)如關(guān)系數(shù)據(jù)、網(wǎng)絡(luò)數(shù)據(jù)、日志數(shù)據(jù)、文件數(shù)據(jù)等抽取到臨時(shí)中間層后,進(jìn)行清洗、轉(zhuǎn)換、集成,最后加載到數(shù)據(jù)倉庫或數(shù)據(jù)庫中,成為通過數(shù)據(jù)分析、數(shù)據(jù)挖掘等提供決策支持的數(shù)據(jù)。大數(shù)據(jù)預(yù)處理整體架構(gòu)數(shù)據(jù)預(yù)處理主要包括:數(shù)據(jù)清洗(DataCleaning)數(shù)據(jù)集成(DataIntegration)數(shù)據(jù)轉(zhuǎn)換(DataTransformation)數(shù)據(jù)消減(DataReduction)大數(shù)據(jù)預(yù)處理將數(shù)據(jù)劃分為結(jié)構(gòu)化數(shù)據(jù)和半結(jié)構(gòu)化/非結(jié)構(gòu)化數(shù)據(jù),分別采用傳統(tǒng)ETL工具和分布式并行處理框架來實(shí)現(xiàn)。大數(shù)據(jù)預(yù)處理整體架構(gòu)大數(shù)據(jù)預(yù)處理整體架構(gòu)結(jié)構(gòu)化數(shù)據(jù)可以存儲(chǔ)在傳統(tǒng)的關(guān)系型數(shù)據(jù)庫中非結(jié)構(gòu)化數(shù)據(jù)可以存儲(chǔ)在新型的分布式存儲(chǔ)中半結(jié)構(gòu)化數(shù)據(jù)可以存儲(chǔ)在新型的分布式NoSQL數(shù)據(jù)庫中大數(shù)據(jù)預(yù)處理整體架構(gòu)結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)之間的數(shù)據(jù)可以按照數(shù)據(jù)處理的需求進(jìn)行遷移。比如:為了進(jìn)行快速并行處理,需要將傳統(tǒng)關(guān)系型數(shù)據(jù)庫中的結(jié)構(gòu)化數(shù)據(jù)導(dǎo)入到分布式存儲(chǔ)中,可以利用Sqoop等工具,先將關(guān)系型數(shù)據(jù)庫的表結(jié)構(gòu)導(dǎo)入分布式數(shù)據(jù)庫(Hive),然后再向分布式數(shù)據(jù)庫的表中導(dǎo)入結(jié)構(gòu)化數(shù)據(jù)。數(shù)據(jù)質(zhì)量問題分類數(shù)據(jù)清洗在匯聚多個(gè)維度、多個(gè)來源、多種結(jié)構(gòu)的數(shù)據(jù)之后,對(duì)數(shù)據(jù)進(jìn)行抽取、轉(zhuǎn)換和集成加載。在這個(gè)過程中,除了更正、修復(fù)系統(tǒng)中的一些錯(cuò)誤數(shù)據(jù)之外,更多的是對(duì)數(shù)據(jù)進(jìn)行歸并整理,并儲(chǔ)存到新的存儲(chǔ)介質(zhì)中。其中,數(shù)據(jù)的質(zhì)量至關(guān)重要。常見的數(shù)據(jù)質(zhì)量問題可以根據(jù)數(shù)據(jù)源的多少和所屬層次分為四類:單數(shù)據(jù)源定義層單數(shù)據(jù)源實(shí)例層多數(shù)據(jù)源的定義層多數(shù)據(jù)源的實(shí)例層數(shù)據(jù)質(zhì)量問題分類數(shù)據(jù)質(zhì)量問題分類單數(shù)據(jù)源定義層違背字段約束條件比如:日期出現(xiàn)6月31日字段屬性依賴沖突比如:兩條記錄描述同一個(gè)人的某一個(gè)屬性,但數(shù)值不一致違反唯一性比如:同一個(gè)主鍵ID出現(xiàn)了多次單數(shù)據(jù)源實(shí)例層單個(gè)屬性值含有過多信息、拼寫錯(cuò)誤、空白值、噪音數(shù)據(jù)、數(shù)據(jù)重復(fù)、過時(shí)數(shù)據(jù)等數(shù)據(jù)質(zhì)量問題分類多數(shù)據(jù)源的定義層同一個(gè)實(shí)體的不同稱呼比如:custom_id,custom_num同一種屬性的不同定義比如:字段長度定義不一致、字段類型不一致等多數(shù)據(jù)源的實(shí)例層數(shù)據(jù)的維度、粒度不一致比如:有的按GB記錄存儲(chǔ)量,有的按照TB記錄存儲(chǔ)量;有的按照年度統(tǒng)計(jì),有的按照月份統(tǒng)計(jì)數(shù)據(jù)重復(fù)、拼寫錯(cuò)誤等PART02數(shù)據(jù)清洗方法現(xiàn)實(shí)世界的數(shù)據(jù)常常是有噪聲、不完全的和不一致的。數(shù)據(jù)清洗過程通過填補(bǔ)遺漏數(shù)據(jù)、消除異常數(shù)據(jù)、平滑噪聲數(shù)據(jù),以及糾正不一致的數(shù)據(jù)。遺漏數(shù)據(jù)處理假設(shè)在分析一個(gè)商場銷售數(shù)據(jù)時(shí),發(fā)現(xiàn)有多個(gè)記錄中的屬性值為空,如顧客的收入屬性,對(duì)于為空的屬性值,可以采用以下方法進(jìn)行遺漏數(shù)據(jù)處理:忽略該條記錄。手工填補(bǔ)遺漏值。利用缺省值填補(bǔ)遺漏值。利用均值填補(bǔ)遺漏值。利用同類別均值填補(bǔ)遺漏值。利用最可能的值填補(bǔ)遺漏值。最后一種方法是一種較常用的方法。噪聲數(shù)據(jù)處理噪聲是指被測變量的一個(gè)隨機(jī)錯(cuò)誤和變化。下面通過給定一個(gè)數(shù)值型屬性,如價(jià)格,來說明平滑去噪的具體方法。方法被分為四種:Bin方法聚類方法人機(jī)結(jié)合檢查方法回歸方法噪聲數(shù)據(jù)處理Bin方法Bin方法通過利用相應(yīng)被平滑數(shù)據(jù)點(diǎn)的周圍點(diǎn)(近鄰),對(duì)一組排序數(shù)據(jù)進(jìn)行平滑。排序后數(shù)據(jù)分配到若干桶(稱為Buckets或Bins)中。對(duì)Bin的劃分方法一般有兩種,一種是等高方法,即每個(gè)Bin中的元素的個(gè)數(shù)相等;另一種是等寬方法,即每個(gè)Bin的取值間距(左右邊界之差)相同。噪聲數(shù)據(jù)處理例如:首先對(duì)價(jià)格數(shù)據(jù)進(jìn)行排序,然后將其劃分為若干等高度的Bin,即每個(gè)Bin包含三個(gè)數(shù)值
Bin均值平滑對(duì)每個(gè)Bin中所有值均用該Bin的均值替換。圖中第一個(gè)Bin中4、8、15均用該Bin的均值9替換Bin邊界平滑對(duì)于給定的Bin,利用每個(gè)Bin的邊界值(最大值或最小值),替換該Bin中的所有值。一般講,每個(gè)Bin的寬度越寬,其平滑效果越明顯。噪聲數(shù)據(jù)處理聚類方法通過聚類分析可幫助發(fā)現(xiàn)異常數(shù)據(jù)。相似或相鄰近的數(shù)據(jù)聚合在一起形成了各個(gè)聚類集合,而那些位于這些聚類集合之外的數(shù)據(jù)對(duì)象,自然而然就被認(rèn)為是異常數(shù)據(jù)。噪聲數(shù)據(jù)處理人機(jī)結(jié)合檢查方法通過人與計(jì)算機(jī)檢查相結(jié)合方法,可以幫助發(fā)現(xiàn)異常數(shù)據(jù)。如:利用基于信息論方法可幫助識(shí)別用于分類識(shí)別手寫符號(hào)庫中的異常模式;所識(shí)別出的異常模式可輸出到一個(gè)列表中;然后由人對(duì)這一列表中的各異常模式進(jìn)行檢查,并最終確認(rèn)無用的模式(真正異常的模式)。這種人機(jī)結(jié)合檢查方法比單純利用手工方法手寫符號(hào)庫進(jìn)行檢查要快許多。噪聲數(shù)據(jù)處理回歸方法可以利用擬合函數(shù)對(duì)數(shù)據(jù)進(jìn)行平滑。如:借助線性回歸方法,包括多變量回歸方法,就可以獲得的多個(gè)變量之間的一個(gè)擬合關(guān)系,從而達(dá)到利用一個(gè)(或一組)變量值來幫助預(yù)測另一個(gè)變量取值的目的。利用回歸分析方法所獲得的擬合函數(shù),能夠幫助平滑數(shù)據(jù)及除去其中的噪聲。不一致數(shù)據(jù)處理現(xiàn)實(shí)世界的數(shù)據(jù)庫常出現(xiàn)數(shù)據(jù)記錄內(nèi)容的不一致,其中一些數(shù)據(jù)不一致可以利用它們與外部的關(guān)聯(lián)手工加以解決。例如:輸入發(fā)生的數(shù)據(jù)錄入錯(cuò)誤一般可以與原稿進(jìn)行對(duì)比來加以糾正。還有一些方法可以幫助糾正使用編碼時(shí)所發(fā)生的不一致問題。知識(shí)工程工具也可以幫助發(fā)現(xiàn)違反數(shù)據(jù)約束條件的情況。PART03數(shù)據(jù)集成與轉(zhuǎn)換方法數(shù)據(jù)集成即將來自多個(gè)數(shù)據(jù)源的數(shù)據(jù),結(jié)合在一起并形成一個(gè)統(tǒng)一數(shù)據(jù)集合,以便為數(shù)據(jù)處理工作的順利完成提供完整的數(shù)據(jù)基礎(chǔ)。數(shù)據(jù)集成處理數(shù)據(jù)處理常常涉及數(shù)據(jù)集成操作,即將來自多個(gè)數(shù)據(jù)源的數(shù)據(jù)。如:數(shù)據(jù)庫、數(shù)據(jù)立方、普通文件等,結(jié)合在一起并形成一個(gè)統(tǒng)一數(shù)據(jù)集合,以便為數(shù)據(jù)處理工作的順利完成提供完整的數(shù)據(jù)基礎(chǔ)。在數(shù)據(jù)集成過程中,需要考慮解決以下幾個(gè)問題:模式集成(SchemaIntegration)問題冗余問題數(shù)據(jù)值沖突檢測與消除數(shù)據(jù)集成處理1.模式集成(SchemaIntegration)問題就是如何使來自多個(gè)數(shù)據(jù)源的現(xiàn)實(shí)世界的實(shí)體相互匹配,這其中就涉及到實(shí)體識(shí)別問題。例如:如何確定一個(gè)數(shù)據(jù)庫中的“custom_id”與另一個(gè)數(shù)據(jù)庫中的“custom_number”是否表示同一實(shí)體。數(shù)據(jù)庫與數(shù)據(jù)倉庫的元數(shù)據(jù)可以幫助避免在模式集成時(shí)發(fā)生錯(cuò)誤。數(shù)據(jù)集成處理2.冗余問題是數(shù)據(jù)集成中經(jīng)常發(fā)生的另一個(gè)問題。若一個(gè)屬性可以從其它屬性中推演出來,那這個(gè)屬性就是冗余屬性。例如:一個(gè)顧客數(shù)據(jù)表中的平均月收入屬性,就是冗余屬性,顯然它可以根據(jù)月收入屬性計(jì)算出來。此外屬性命名的不一致也會(huì)導(dǎo)致集成后的數(shù)據(jù)集出現(xiàn)數(shù)據(jù)冗余問題。數(shù)據(jù)集成處理3.數(shù)據(jù)值沖突檢測與消除如對(duì)于一個(gè)現(xiàn)實(shí)世界實(shí)體,其來自不同數(shù)據(jù)源的屬性值或許不同。產(chǎn)生這樣問題原因可能是表示的差異、比例尺度不同、或編碼的差異等。例如:重量屬性在一個(gè)系統(tǒng)中采用公制,而在另一個(gè)系統(tǒng)中卻采用英制。價(jià)格屬性不同地點(diǎn)采用不同貨幣單位。這些語義的差異為數(shù)據(jù)集成提出許多問題。數(shù)據(jù)轉(zhuǎn)換處理所謂數(shù)據(jù)轉(zhuǎn)換就是將數(shù)據(jù)轉(zhuǎn)換或歸并從而構(gòu)成一個(gè)適合數(shù)據(jù)處理的描述形式。數(shù)據(jù)轉(zhuǎn)換包含以下處理內(nèi)容:平滑處理,幫助除去數(shù)據(jù)中的噪聲
主要技術(shù)方法有:Bin方法、聚類方法和回歸方法。合計(jì)處理,對(duì)數(shù)據(jù)進(jìn)行總結(jié)或合計(jì)(Aggregation)操作
例如:每天數(shù)據(jù)處理常常涉及數(shù)據(jù)集成操作銷售額(數(shù)據(jù))可以進(jìn)行合計(jì)操作以獲得每月或每年的總額。這一操作常用于構(gòu)造數(shù)據(jù)立方或?qū)?shù)據(jù)進(jìn)行多細(xì)度的分析。數(shù)據(jù)轉(zhuǎn)換處理數(shù)據(jù)泛化處理(Generalization)。所謂泛化處理就是用更抽象(更高層次)的概念來取代低層次或數(shù)據(jù)層的數(shù)據(jù)對(duì)象。
例如:街道屬性可以泛化到更高層次的概念,諸如:城市、國家。
對(duì)于數(shù)值型的屬性也可以映射到更高層次概念如年齡屬性。如:年輕、中年和老年。規(guī)格化。規(guī)格化就是將有關(guān)屬性數(shù)據(jù)按比例投射到特定小范圍之中。如將工資收入屬性值映射到0到1范圍內(nèi)。屬性構(gòu)造。根據(jù)已有屬性集構(gòu)造新的屬性,以幫助數(shù)據(jù)處理過程。對(duì)大規(guī)模數(shù)據(jù)進(jìn)行復(fù)雜的數(shù)據(jù)分析通常需要耗費(fèi)大量的時(shí)間。盡管在大數(shù)據(jù)時(shí)代,數(shù)據(jù)處理能力有了極大的提升,但是在有些情況下對(duì)全部的數(shù)據(jù)進(jìn)行復(fù)雜的數(shù)據(jù)分析還是不現(xiàn)實(shí)甚至不可行,特別是在需要進(jìn)行交互式數(shù)據(jù)挖掘時(shí)。PART04數(shù)據(jù)削減數(shù)據(jù)削減數(shù)據(jù)消減技術(shù)的主要目的就是用于幫助從原有巨大數(shù)據(jù)集中獲得一個(gè)精簡的數(shù)據(jù)集,并使這一精簡數(shù)據(jù)集保持原有數(shù)據(jù)集的完整性。數(shù)據(jù)削減的主要策略有以下幾種:數(shù)據(jù)立方合計(jì):這類合計(jì)操作主要用于構(gòu)造數(shù)據(jù)立方(數(shù)據(jù)倉庫操作)。維數(shù)消減:主要用于檢測和消除無關(guān)、弱相關(guān)、或冗余的屬性或維(數(shù)據(jù)倉庫中屬性)。數(shù)據(jù)壓縮:利用編碼技術(shù)壓縮數(shù)據(jù)集的大小。數(shù)據(jù)削減數(shù)據(jù)塊消減:利用更簡單的數(shù)據(jù)表達(dá)形式。
如:參數(shù)模型、非參數(shù)模型(聚類、采樣、直方圖等),來取代原有的數(shù)據(jù)。離散化與概念層次生成:所謂離散化就是利用取值范圍或更高層次概念來替換初始數(shù)據(jù)。利用概念層次可以幫助挖掘不同抽象層次的模式知識(shí)。離散化技術(shù)方法可以通過將屬性(連續(xù)取值)域值范圍分為若干區(qū)間,來幫助消減一個(gè)連續(xù)(取值)屬性的取值個(gè)數(shù)。PART05離散化和概念層次樹離散化和概念層次樹離散化技術(shù)方法可以通過將屬性(連續(xù)取值)域值范圍分為若干區(qū)間,來幫助消減一個(gè)連續(xù)(取值)屬性的取值個(gè)數(shù)??梢杂靡粋€(gè)標(biāo)簽來表示一個(gè)區(qū)間內(nèi)的實(shí)際數(shù)據(jù)值。在基于決策樹的分類挖掘中,消減一個(gè)屬性取值個(gè)數(shù)的離散化處理是一個(gè)極為有效的數(shù)據(jù)預(yù)處理步驟。概念層次樹可以通過利用較高層次概念替換低層次概念而減少原來數(shù)據(jù)集。雖然一些細(xì)節(jié)在數(shù)據(jù)泛化過程中消失了,但這樣所獲得的泛化數(shù)據(jù)或許會(huì)更易于理解、更有意義。在消減后的數(shù)據(jù)集上進(jìn)行數(shù)據(jù)挖掘顯然效率更高。如右圖,年齡屬性概念層次樹。數(shù)值概念層次樹由于數(shù)據(jù)范圍變化較大,構(gòu)造數(shù)值屬性的概念層次樹是一件較為困難的事情。利用數(shù)據(jù)分布分析,可以自動(dòng)構(gòu)造數(shù)值屬性的概念層次樹。其中五種主要構(gòu)造方法如下:Bin方法直方圖方法聚類分析方法基于熵的離散化方法自然劃分分段方法數(shù)值概念層次樹Bin方法Bin方法用于數(shù)據(jù)平滑。這些應(yīng)用也是一種形式的離散化。例如:屬性的值可以通過將其分配到各Bin中而將其離散化。利用每個(gè)Bin的均值和中數(shù)替換每個(gè)Bin中的值(利用均值或中數(shù)進(jìn)行平滑)。循環(huán)應(yīng)用這些操作處理每次操作結(jié)果,就可以獲得一個(gè)概念層次樹。直方圖方法直方圖方法也可以用于離散化處理。例如:在等寬直方圖中,數(shù)值被劃分為等大小的區(qū)間,如:(0,100]、(100,200]、…、(900,1000]。循環(huán)應(yīng)用直方圖分析方法處理每次劃分結(jié)果,從而最終自動(dòng)獲得多層次概念樹,而當(dāng)達(dá)到用戶指定層次水平后劃分結(jié)束。數(shù)值概念層次樹聚類分析方法聚類算法可以將數(shù)據(jù)集劃分為若干類或組。每個(gè)類構(gòu)成了概念層次樹的一個(gè)節(jié)點(diǎn);每個(gè)類還可以進(jìn)一步分解為若干子類,從而構(gòu)成更低水平的層次。當(dāng)然類也可以合并起來構(gòu)成更高層次的概念水平。基于熵的離散化方法基于熵的方法構(gòu)造數(shù)值概念層次樹可以消減數(shù)據(jù)集規(guī)模。與其它方法不同的是基于熵的方法利用了類別信息,這就使得邊界的劃分更加有利于改善分類挖掘結(jié)果的準(zhǔn)確性。數(shù)值概念層次樹自然劃分分段方法盡管Bin方法、直方圖方法、聚類方法和基于熵的離散化方法均可以幫助構(gòu)造數(shù)值概念層次樹,但許多時(shí)候用戶仍然使用將數(shù)值區(qū)間劃分為歸一的、易讀懂的間隔,以使這些間隔看起來更加自然直觀。如:將年收入數(shù)值屬性取值區(qū)域分解為[50000,60000]區(qū)間要比利用復(fù)雜聚類分析所獲得的[51265,60324]區(qū)間要直觀的多。類別概念層次樹類別數(shù)據(jù)是一種離散數(shù)據(jù)。類別屬性可取有限個(gè)不同的值且這些值之間無大小和順序。比如:國家、工作、商品類別等。構(gòu)造類別屬性的概念層次樹的主要方法有如下幾種:屬性值的順序關(guān)系已在用戶或?qū)<抑付ǖ哪J蕉x說明。通過數(shù)據(jù)聚合來描述層次樹。定義一組屬性但不說明其順序。類別概念層次樹屬性值的順序關(guān)系已在用戶或?qū)<抑付ǖ哪J蕉x說明構(gòu)造屬性(或維)的概念層次樹涉及一組屬性;通過在(數(shù)據(jù)庫)模式定義時(shí)指定各屬性的有序關(guān)系,可以幫助輕松構(gòu)造出相應(yīng)的概念層次樹。例如:一個(gè)關(guān)系數(shù)據(jù)庫中的地點(diǎn)屬性:街道、城市、省和國家。根據(jù)數(shù)據(jù)庫模式定義時(shí)的描述,可以很容易地構(gòu)造出(含有順序語義)層次樹,即:街道<城市<省<國家。類別概念層次樹通過數(shù)據(jù)聚合來描述層次樹這是概念層次樹的一個(gè)主要(手工)構(gòu)造方法。在大規(guī)模數(shù)據(jù)庫中,想要通過窮舉所有值而構(gòu)造一個(gè)完整概念層次樹是不切實(shí)際的,但可以對(duì)其中一部分?jǐn)?shù)據(jù)進(jìn)行聚合說明。例如:在模式定義基礎(chǔ)構(gòu)造了省和國家的層次樹,這時(shí)可以手工加入:{安徽、江蘇、山東}?華東地區(qū);{廣東、福建}?華南地區(qū)等“地區(qū)”中間層次。類別概念層次樹定義一組屬性但不說明其順序用戶可以將一組屬性組織在一起以便構(gòu)成一個(gè)層次樹,但不說明這些屬性相互關(guān)系。這就需要自動(dòng)產(chǎn)生屬性順序以便構(gòu)造一個(gè)有意義的概念層次樹。沒有數(shù)據(jù)語義的知識(shí),想要獲得任意一組屬性的順序關(guān)系是很困難的。一個(gè)重要線索:高水平概念通常包含了若干低層次概念。定義屬性的一個(gè)高水平概念通常包含了比一個(gè)低層次概念所包含要少一些的不同值。根據(jù)這一觀察,就可以通過給定屬性集中每個(gè)屬性的一些不同值自動(dòng)構(gòu)造一個(gè)概念層次樹。擁有最多不同值的屬性被放到層次樹最低層;擁有的不同值數(shù)目越少在概念層次樹上所放的層次越高。類別概念層次樹定義一組屬性但不說明其順序。例如:假設(shè)用戶針對(duì)商場地點(diǎn)屬性選擇了一組屬性:街道、城市、省和國家,但沒有說明這些屬性層次順序關(guān)系。地點(diǎn)的概念層次樹可以通過以下步驟自動(dòng)產(chǎn)生:首先根據(jù)每個(gè)屬性不同值的數(shù)目從小到大進(jìn)行排序;從而獲得這樣的順序,其中括號(hào)內(nèi)容為相應(yīng)屬性不同值的數(shù)目。國家(15)、省(65)、城市(3567)和街道(674339)。根據(jù)所排順序自頂而下構(gòu)造層次樹,即第一個(gè)屬性在最高層,最后一個(gè)屬性在最低層。類別概念層次樹定義一組屬性但不說明其順序。需要注意的上述啟發(fā)知識(shí)并非始終正確。如:在一個(gè)帶有時(shí)間描述的數(shù)據(jù)庫中,時(shí)間屬性涉及20個(gè)不同年、12個(gè)不同月和1個(gè)不同星期的值,則根據(jù)上述自動(dòng)產(chǎn)生概念層次樹的啟發(fā)知識(shí),可以獲得:年<月<星期。星期在概念層次樹的最頂層,這顯然是不符合實(shí)際的。ETL分別是Extract、Transform和Load三個(gè)單詞的首字母縮寫也即數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的過程,但經(jīng)常簡稱其為數(shù)據(jù)抽取。PART06ETL工具KettleETL工具簡介ETL分別是Extract、Transform和Load三個(gè)單詞的首字母縮寫也即數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的過程,但經(jīng)常簡稱其為數(shù)據(jù)抽取。Extract(抽取)將數(shù)據(jù)從各種原始的業(yè)務(wù)系統(tǒng)中讀取出來,這是所有工作的前提。一般抽取過程需要連接到不同的數(shù)據(jù)源,以便為隨后的步驟提供數(shù)據(jù)。這一步簡單而瑣碎,但實(shí)際上是ETL解決方案的成功實(shí)施的一個(gè)主要障礙。Transform(轉(zhuǎn)換)按照預(yù)先設(shè)計(jì)好的規(guī)則將抽取到的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,使本來異構(gòu)的數(shù)據(jù)格式能統(tǒng)一起來。任何對(duì)數(shù)據(jù)的處理過程都是轉(zhuǎn)換,這些處理過程通常包括(但不限于)下面一些操作:ETL工具簡介Transform(轉(zhuǎn)換)移動(dòng)數(shù)據(jù)根據(jù)規(guī)則驗(yàn)證數(shù)據(jù)數(shù)據(jù)內(nèi)容和數(shù)據(jù)結(jié)構(gòu)的修改將多個(gè)數(shù)據(jù)源的數(shù)據(jù)集成根據(jù)處理后的數(shù)據(jù)計(jì)算派生值和聚集值Load(裝載)將轉(zhuǎn)換完的數(shù)據(jù)按計(jì)劃增量或全部導(dǎo)入到數(shù)據(jù)倉庫中。也就是說將數(shù)據(jù)加載到目標(biāo)系統(tǒng)的所有操作。ETL工具簡介使用ETL工具實(shí)現(xiàn)數(shù)據(jù)清洗的實(shí)現(xiàn)方法大致步驟如下:首先,在理解源數(shù)據(jù)的基礎(chǔ)上實(shí)現(xiàn)數(shù)據(jù)表屬性一致化。為解決源數(shù)據(jù)的同義異名和同名異義的問題,可通過元數(shù)據(jù)管理子系統(tǒng),在理解源數(shù)據(jù)的同時(shí),對(duì)不同表的屬性名根據(jù)其含義重新定義其在數(shù)據(jù)挖掘庫中的名字,并以轉(zhuǎn)換規(guī)則的形式存放在元數(shù)據(jù)庫中,在數(shù)據(jù)集成的時(shí)候,系統(tǒng)自動(dòng)根據(jù)這些轉(zhuǎn)換規(guī)則將源數(shù)據(jù)中的字段名轉(zhuǎn)換成新定義的字段名,從而實(shí)現(xiàn)數(shù)據(jù)挖掘庫中的同名同義。其次,通過數(shù)據(jù)縮減,大幅度縮小數(shù)據(jù)量。由于源數(shù)據(jù)量很大,處理起來非常耗時(shí),所以可以優(yōu)先進(jìn)行數(shù)據(jù)縮減,以提高后續(xù)數(shù)據(jù)處理分析效率。ETL工具簡介最后,通過預(yù)先設(shè)定數(shù)據(jù)處理的可視化功能節(jié)點(diǎn),達(dá)到可視化的進(jìn)行數(shù)據(jù)清洗和數(shù)據(jù)轉(zhuǎn)換的目的。針對(duì)縮減并集成后的數(shù)據(jù),通過組合預(yù)處理子系統(tǒng)提供各種數(shù)據(jù)處理功能節(jié)點(diǎn),能夠以可視化的方式快速有效完成數(shù)據(jù)清洗和數(shù)據(jù)轉(zhuǎn)換過程。ETL工具必須對(duì)抽取到的數(shù)據(jù)能夠進(jìn)行靈活計(jì)算、合并、拆分等轉(zhuǎn)換操作。目前,ETL工具的典型代表有:商業(yè)軟件:Informatica、IBMDatastage、OracleODI、MicrosoftSSIS等。開源軟件:Kettle、Talend、CloverETL、Ketl,Octopus等。Kettle簡介Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上運(yùn)行,數(shù)據(jù)抽取高效穩(wěn)定。Kettle允許用戶管理來自不同數(shù)據(jù)庫的數(shù)據(jù),通過提供一個(gè)圖形化的用戶環(huán)境來描述想做什么,而不是怎么做。Kettle家族目前包括4個(gè)產(chǎn)品:Spoon、Pan、CHEF、Kitchen。Spoon允許用戶通過圖形界面方便地設(shè)計(jì)ETL轉(zhuǎn)換過程(Transformation)。Pan允許用戶批量運(yùn)行由Spoon設(shè)計(jì)的ETL轉(zhuǎn)換。Pan是一個(gè)后臺(tái)執(zhí)行的程序,沒有圖形界面。允許用戶創(chuàng)建任務(wù)(Job)腳本,主要用于復(fù)雜的數(shù)據(jù)倉庫更新工作。Kitchen允許用戶批量運(yùn)行由Chef設(shè)計(jì)的任務(wù),通常是使用一個(gè)調(diào)度器從而可以方便地啟動(dòng)和控制ETL過程。Kettle使用定義一個(gè)名為sourcetable的表,用于記錄云平臺(tái)中的Host、Cluster和DataCenter的對(duì)應(yīng)關(guān)系以及獲取記錄的datetime和Host的網(wǎng)卡數(shù)。源數(shù)據(jù)庫的數(shù)據(jù)庫表結(jié)構(gòu):Kettle使用源數(shù)據(jù)的抽取Kettle配置源數(shù)據(jù)庫連接,“文件”→“新建”→“轉(zhuǎn)換”,左側(cè)Design欄,選擇“輸入”→“表輸入”,創(chuàng)建一個(gè)名為“源數(shù)據(jù)輸出”的表輸入步驟,雙擊進(jìn)入“源數(shù)據(jù)輸出”,“數(shù)據(jù)庫連接”處選擇“新建”一個(gè)“源數(shù)據(jù)庫”連接,配置源MySQL數(shù)據(jù)庫的參數(shù)信息并測試連接。Kettle使用源數(shù)據(jù)的抽取根據(jù)業(yè)務(wù)需求,首先選擇出所需要處理的數(shù)據(jù),通過雙擊選擇“源數(shù)據(jù)輸出”步驟,編輯SQL,即獲取所需要抽取的數(shù)據(jù)模型。而在這此步驟的操作流程中,需要我們注意的是SQL語句的編輯。SELECTid,datetime,HostName,Cluster,DataCenter,Nic_Number,cpu_total_ghzFROM‘sourcetable’WHEREtimestamp(DATA_FORMAT(datatime,’%Y-%m-%d’))=timestamp(DATA_FORMAT(date_add(now(),interval1second))Kettle使用Kettle使用源數(shù)據(jù)的抽取編輯完畢SQL語句后,通過“預(yù)覽”按鈕就可以預(yù)覽執(zhí)行SQL的結(jié)果。Kettle使用數(shù)據(jù)清洗和轉(zhuǎn)換對(duì)上一步的預(yù)覽得到的數(shù)據(jù)還需要做數(shù)據(jù)清洗和轉(zhuǎn)換,比如對(duì)數(shù)據(jù)的升降排序、和其他數(shù)據(jù)表鏈接、對(duì)空值的處理、對(duì)重復(fù)值的處理等,主要包括:數(shù)據(jù)補(bǔ)缺數(shù)據(jù)替換過濾行行排序行鏈接行去重行合并Kettle使用數(shù)據(jù)清洗和轉(zhuǎn)換例如:數(shù)據(jù)排序設(shè)置Kettle使用數(shù)據(jù)清洗和轉(zhuǎn)換例如:數(shù)據(jù)空值處理Kettle使用目標(biāo)數(shù)據(jù)的上載創(chuàng)建一個(gè)名為“目標(biāo)數(shù)據(jù)輸入”的表輸出步驟,配置目標(biāo)數(shù)據(jù)庫的參數(shù)信息。左側(cè)Design欄選擇“輸出”→“表輸出”,創(chuàng)建一個(gè)“目標(biāo)數(shù)據(jù)輸入”的表輸出步驟,在“數(shù)據(jù)庫連接”處新建一個(gè)“目標(biāo)數(shù)據(jù)庫”,輸入對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫參數(shù)信息并測試Kettle和MySQL數(shù)據(jù)庫成功連接,然后選擇目標(biāo)數(shù)據(jù)庫表。Kettle使用目標(biāo)數(shù)據(jù)的上載目標(biāo)數(shù)據(jù)庫配置并能正常連接后,還需要配置數(shù)據(jù)流字段和目標(biāo)數(shù)據(jù)庫表字段的對(duì)應(yīng)關(guān)系。其中“表字段”為目標(biāo)數(shù)據(jù)表字段,“流字段”為經(jīng)過Kettle處理的數(shù)據(jù)流字段,二者名稱可以一致也可以不一致,在配置的時(shí)候做好對(duì)應(yīng)即可。至此,源數(shù)據(jù)的抽取,數(shù)據(jù)流的清洗轉(zhuǎn)換和目標(biāo)數(shù)據(jù)庫的上載已經(jīng)配置完成,整個(gè)Kettle的轉(zhuǎn)換腳本也就完成了。Sqoop用于在Hadoop、Hive和HBase與傳統(tǒng)的數(shù)據(jù)庫(MySQL、Oracle和PostSQL等)間進(jìn)行數(shù)據(jù)的傳遞。PART07數(shù)據(jù)轉(zhuǎn)換工具SqoopSqoop簡介Sqoop(SQL–to–Hadoop)是一款方便的在傳統(tǒng)關(guān)系型數(shù)據(jù)庫與Hadoop之間進(jìn)行數(shù)據(jù)遷移的工具。它可以將一個(gè)關(guān)系型數(shù)據(jù)庫(中的數(shù)據(jù)導(dǎo)入到Hadoop中;也可以將Hadoop中的數(shù)據(jù)導(dǎo)入到關(guān)系型數(shù)據(jù)庫中;可以使用全表導(dǎo)入和增量導(dǎo)入方式傳輸數(shù)據(jù)。Sqoop功能:Sqoop簡介Sqoop工具接收到客戶端的shell命令或者JavaAPI命令后,通過Sqoop中的任務(wù)翻譯器(TaskTranslator)將命令轉(zhuǎn)換為對(duì)應(yīng)的MapReduce任務(wù),而后將關(guān)系型數(shù)據(jù)庫和Hadoop中的數(shù)據(jù)進(jìn)行相互轉(zhuǎn)移,進(jìn)而完成數(shù)據(jù)的拷貝。Sqoop的架構(gòu):Sqoop簡介借助于數(shù)據(jù)庫描述源數(shù)據(jù)的格式,Sqoop可以自動(dòng)完成大部分?jǐn)?shù)據(jù)轉(zhuǎn)移工作。Sqoop使用MapReduce導(dǎo)入和導(dǎo)出數(shù)據(jù)不但可以通過并發(fā)提高數(shù)據(jù)轉(zhuǎn)移速度,還可以保證數(shù)據(jù)轉(zhuǎn)移的容錯(cuò)能力。Sqoop基本用法用戶可以使用Sqoop從關(guān)系型數(shù)據(jù)庫導(dǎo)入數(shù)據(jù)到HDFS。Sqoop逐行從數(shù)據(jù)庫表中讀入數(shù)據(jù)到HDFS。因?yàn)閷?dǎo)入過程是并行進(jìn)行的,所以會(huì)產(chǎn)生一組HDFS文件。產(chǎn)生的文件可以是正文文件,原來數(shù)據(jù)庫表中的列之間用分號(hào)或者制表符進(jìn)行隔離。產(chǎn)生的文件也可以是二進(jìn)制Avro文件,還可以是由串行化記錄組成的順序文件(SequenceFiles)Sqoop導(dǎo)入數(shù)據(jù)的時(shí)候會(huì)生成一個(gè)封裝了導(dǎo)入數(shù)據(jù)庫表單行數(shù)據(jù)的Java類。Sqoop就是使用該Java類完成數(shù)據(jù)導(dǎo)入的。同時(shí),開發(fā)工程師也可以在后續(xù)的MapReduce操作中使用該類進(jìn)行數(shù)據(jù)處理。該類可以對(duì)SequenceFiles中的數(shù)據(jù)進(jìn)行反串行化,也可以把數(shù)據(jù)串行化到SequenceFiles中。Sqoop基本用法對(duì)于導(dǎo)出的正文文件,該類可以對(duì)文件進(jìn)行解析獲取每行每列的數(shù)據(jù)。所以,開發(fā)者通過使用該類能夠快速開發(fā)處理
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年岳麓版選修6歷史下冊階段測試試卷含答案
- 2025年華師大版選修2地理下冊階段測試試卷
- 2025年北師大新版選修5歷史上冊階段測試試卷含答案
- 2025年外研版三年級(jí)起點(diǎn)選擇性必修3歷史上冊月考試卷含答案
- 2025年浙教版選修6歷史下冊月考試卷
- 二零二五版面料行業(yè)標(biāo)準(zhǔn)制定與采購合同范本3篇
- 二零二五年度生物制藥項(xiàng)目與派遣公司研發(fā)人員派遣合同4篇
- 二零二五版派遣人力資源管理顧問人才派遣與咨詢合同4篇
- 二零二五版商業(yè)綜合體租賃合同范本4篇
- 二零二五年度個(gè)人汽車租賃貸款合同范本3篇
- 南安市第三次全國文物普查不可移動(dòng)文物-各鄉(xiāng)鎮(zhèn)、街道分布情況登記清單(表五)
- 選煤廠安全知識(shí)培訓(xùn)課件
- 項(xiàng)目前期選址分析報(bào)告
- 急性肺栓塞搶救流程
- 《統(tǒng)計(jì)學(xué)-基于Python》 課件全套 第1-11章 數(shù)據(jù)與Python語言-時(shí)間序列分析和預(yù)測
- 《形象價(jià)值百萬》課件
- 紅色文化教育國內(nèi)外研究現(xiàn)狀范文十
- 中醫(yī)基礎(chǔ)理論-肝
- 小學(xué)外來人員出入校門登記表
- 《土地利用規(guī)劃學(xué)》完整課件
- GB/T 25283-2023礦產(chǎn)資源綜合勘查評(píng)價(jià)規(guī)范
評(píng)論
0/150
提交評(píng)論