《商務(wù)大數(shù)據(jù)分析與應(yīng)用》課件-3-1-3大數(shù)據(jù)預(yù)處理_第1頁
《商務(wù)大數(shù)據(jù)分析與應(yīng)用》課件-3-1-3大數(shù)據(jù)預(yù)處理_第2頁
《商務(wù)大數(shù)據(jù)分析與應(yīng)用》課件-3-1-3大數(shù)據(jù)預(yù)處理_第3頁
《商務(wù)大數(shù)據(jù)分析與應(yīng)用》課件-3-1-3大數(shù)據(jù)預(yù)處理_第4頁
《商務(wù)大數(shù)據(jù)分析與應(yīng)用》課件-3-1-3大數(shù)據(jù)預(yù)處理_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

商務(wù)大數(shù)據(jù)分析與應(yīng)用

離散化和概念層次樹離散化技術(shù)方法可以通過將屬性(連續(xù)取值)域值范圍分為若干區(qū)間,來幫助消減一個連續(xù)(取值)屬性的取值個數(shù)。離散化和概念層次樹離散化技術(shù)方法可以通過將屬性(連續(xù)取值)域值范圍分為若干區(qū)間,來幫助消減一個連續(xù)(取值)屬性的取值個數(shù)。可以用一個標(biāo)簽來表示一個區(qū)間內(nèi)的實際數(shù)據(jù)值。在基于決策樹的分類挖掘中,消減一個屬性取值個數(shù)的離散化處理是一個極為有效的數(shù)據(jù)預(yù)處理步驟。概念層次樹可以通過利用較高層次概念替換低層次概念而減少原來數(shù)據(jù)集。雖然一些細節(jié)在數(shù)據(jù)泛化過程中消失了,但這樣所獲得的泛化數(shù)據(jù)或許會更易于理解、更有意義。在消減后的數(shù)據(jù)集上進行數(shù)據(jù)挖掘顯然效率更高。如右圖,年齡屬性概念層次樹。數(shù)值概念層次樹由于數(shù)據(jù)范圍變化較大,構(gòu)造數(shù)值屬性的概念層次樹是一件較為困難的事情。利用數(shù)據(jù)分布分析,可以自動構(gòu)造數(shù)值屬性的概念層次樹。其中五種主要構(gòu)造方法如下:Bin方法直方圖方法聚類分析方法基于熵的離散化方法自然劃分分段方法數(shù)值概念層次樹Bin方法Bin方法用于數(shù)據(jù)平滑。這些應(yīng)用也是一種形式的離散化。例如:屬性的值可以通過將其分配到各Bin中而將其離散化。利用每個Bin的均值和中數(shù)替換每個Bin中的值(利用均值或中數(shù)進行平滑)。循環(huán)應(yīng)用這些操作處理每次操作結(jié)果,就可以獲得一個概念層次樹。直方圖方法直方圖方法也可以用于離散化處理。例如:在等寬直方圖中,數(shù)值被劃分為等大小的區(qū)間,如:(0,100]、(100,200]、…、(900,1000]。循環(huán)應(yīng)用直方圖分析方法處理每次劃分結(jié)果,從而最終自動獲得多層次概念樹,而當(dāng)達到用戶指定層次水平后劃分結(jié)束。數(shù)值概念層次樹聚類分析方法聚類算法可以將數(shù)據(jù)集劃分為若干類或組。每個類構(gòu)成了概念層次樹的一個節(jié)點;每個類還可以進一步分解為若干子類,從而構(gòu)成更低水平的層次。當(dāng)然類也可以合并起來構(gòu)成更高層次的概念水平?;陟氐碾x散化方法基于熵的方法構(gòu)造數(shù)值概念層次樹可以消減數(shù)據(jù)集規(guī)模。與其它方法不同的是基于熵的方法利用了類別信息,這就使得邊界的劃分更加有利于改善分類挖掘結(jié)果的準(zhǔn)確性。數(shù)值概念層次樹自然劃分分段方法盡管Bin方法、直方圖方法、聚類方法和基于熵的離散化方法均可以幫助構(gòu)造數(shù)值概念層次樹,但許多時候用戶仍然使用將數(shù)值區(qū)間劃分為歸一的、易讀懂的間隔,以使這些間隔看起來更加自然直觀。如:將年收入數(shù)值屬性取值區(qū)域分解為[50000,60000]區(qū)間要比利用復(fù)雜聚類分析所獲得的[51265,60324]區(qū)間要直觀的多。類別概念層次樹類別數(shù)據(jù)是一種離散數(shù)據(jù)。類別屬性可取有限個不同的值且這些值之間無大小和順序。比如:國家、工作、商品類別等。構(gòu)造類別屬性的概念層次樹的主要方法有如下幾種:屬性值的順序關(guān)系已在用戶或?qū)<抑付ǖ哪J蕉x說明。通過數(shù)據(jù)聚合來描述層次樹。定義一組屬性但不說明其順序。類別概念層次樹屬性值的順序關(guān)系已在用戶或?qū)<抑付ǖ哪J蕉x說明構(gòu)造屬性(或維)的概念層次樹涉及一組屬性;通過在(數(shù)據(jù)庫)模式定義時指定各屬性的有序關(guān)系,可以幫助輕松構(gòu)造出相應(yīng)的概念層次樹。例如:一個關(guān)系數(shù)據(jù)庫中的地點屬性:街道、城市、省和國家。根據(jù)數(shù)據(jù)庫模式定義時的描述,可以很容易地構(gòu)造出(含有順序語義)層次樹,即:街道<城市<省<國家。類別概念層次樹通過數(shù)據(jù)聚合來描述層次樹這是概念層次樹的一個主要(手工)構(gòu)造方法。在大規(guī)模數(shù)據(jù)庫中,想要通過窮舉所有值而構(gòu)造一個完整概念層次樹是不切實際的,但可以對其中一部分?jǐn)?shù)據(jù)進行聚合說明。例如:在模式定義基礎(chǔ)構(gòu)造了省和國家的層次樹,這時可以手工加入:{安徽、江蘇、山東}?華東地區(qū);{廣東、福建}?華南地區(qū)等“地區(qū)”中間層次。類別概念層次樹定義一組屬性但不說明其順序用戶可以將一組屬性組織在一起以便構(gòu)成一個層次樹,但不說明這些屬性相互關(guān)系。這就需要自動產(chǎn)生屬性順序以便構(gòu)造一個有意義的概念層次樹。沒有數(shù)據(jù)語義的知識,想要獲得任意一組屬性的順序關(guān)系是很困難的。一個重要線索:高水平概念通常包含了若干低層次概念。定義屬性的一個高水平概念通常包含了比一個低層次概念所包含要少一些的不同值。根據(jù)這一觀察,就可以通過給定屬性集中每個屬性的一些不同值自動構(gòu)造一個概念層次樹。擁有最多不同值的屬性被放到層次樹最低層;擁有的不同值數(shù)目越少在概念層次樹上所放的層次越高。類別概念層次樹定義一組屬性但不說明其順序。例如:假設(shè)用戶針對商場地點屬性選擇了一組屬性:街道、城市、省和國家,但沒有說明這些屬性層次順序關(guān)系。地點的概念層次樹可以通過以下步驟自動產(chǎn)生:首先根據(jù)每個屬性不同值的數(shù)目從小到大進行排序;從而獲得這樣的順序,其中括號內(nèi)容為相應(yīng)屬性不同值的數(shù)目。國家(15)、?。?5)、城市(3567)和街道(674339)。根據(jù)所排順序自頂而下構(gòu)造層次樹,即第一個屬性在最高層,最后一個屬性在最低層。類別概念層次樹定義一組屬性但不說明其順序。需要注意的上述啟發(fā)知識并非始終正確。如:在一個帶有時間描述的數(shù)據(jù)庫中,時間屬性涉及20個不同年、12個不同月和1個不同星期的值,則根據(jù)上述自動產(chǎn)生概念層次樹的啟發(fā)知識,可以獲得:年<月<星期。星期在概念層次樹的最頂層,這顯然是不符合實際的。ETL分別是Extract、Transform和Load三個單詞的首字母縮寫也即數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的過程,但經(jīng)常簡稱其為數(shù)據(jù)抽取。ETL工具KettleETL工具簡介ETL分別是Extract、Transform和Load三個單詞的首字母縮寫也即數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的過程,但經(jīng)常簡稱其為數(shù)據(jù)抽取。Extract(抽?。?shù)據(jù)從各種原始的業(yè)務(wù)系統(tǒng)中讀取出來,這是所有工作的前提。一般抽取過程需要連接到不同的數(shù)據(jù)源,以便為隨后的步驟提供數(shù)據(jù)。這一步簡單而瑣碎,但實際上是ETL解決方案的成功實施的一個主要障礙。Transform(轉(zhuǎn)換)按照預(yù)先設(shè)計好的規(guī)則將抽取到的數(shù)據(jù)進行轉(zhuǎn)換,使本來異構(gòu)的數(shù)據(jù)格式能統(tǒng)一起來。任何對數(shù)據(jù)的處理過程都是轉(zhuǎn)換,這些處理過程通常包括(但不限于)下面一些操作:ETL工具簡介Transform(轉(zhuǎn)換)移動數(shù)據(jù)根據(jù)規(guī)則驗證數(shù)據(jù)數(shù)據(jù)內(nèi)容和數(shù)據(jù)結(jié)構(gòu)的修改將多個數(shù)據(jù)源的數(shù)據(jù)集成根據(jù)處理后的數(shù)據(jù)計算派生值和聚集值Load(裝載)將轉(zhuǎn)換完的數(shù)據(jù)按計劃增量或全部導(dǎo)入到數(shù)據(jù)倉庫中。也就是說將數(shù)據(jù)加載到目標(biāo)系統(tǒng)的所有操作。ETL工具簡介使用ETL工具實現(xiàn)數(shù)據(jù)清洗的實現(xiàn)方法大致步驟如下:首先,在理解源數(shù)據(jù)的基礎(chǔ)上實現(xiàn)數(shù)據(jù)表屬性一致化。為解決源數(shù)據(jù)的同義異名和同名異義的問題,可通過元數(shù)據(jù)管理子系統(tǒng),在理解源數(shù)據(jù)的同時,對不同表的屬性名根據(jù)其含義重新定義其在數(shù)據(jù)挖掘庫中的名字,并以轉(zhuǎn)換規(guī)則的形式存放在元數(shù)據(jù)庫中,在數(shù)據(jù)集成的時候,系統(tǒng)自動根據(jù)這些轉(zhuǎn)換規(guī)則將源數(shù)據(jù)中的字段名轉(zhuǎn)換成新定義的字段名,從而實現(xiàn)數(shù)據(jù)挖掘庫中的同名同義。其次,通過數(shù)據(jù)縮減,大幅度縮小數(shù)據(jù)量。由于源數(shù)據(jù)量很大,處理起來非常耗時,所以可以優(yōu)先進行數(shù)據(jù)縮減,以提高后續(xù)數(shù)據(jù)處理分析效率。ETL工具簡介最后,通過預(yù)先設(shè)定數(shù)據(jù)處理的可視化功能節(jié)點,達到可視化的進行數(shù)據(jù)清洗和數(shù)據(jù)轉(zhuǎn)換的目的。針對縮減并集成后的數(shù)據(jù),通過組合預(yù)處理子系統(tǒng)提供各種數(shù)據(jù)處理功能節(jié)點,能夠以可視化的方式快速有效完成數(shù)據(jù)清洗和數(shù)據(jù)轉(zhuǎn)換過程。ETL工具必須對抽取到的數(shù)據(jù)能夠進行靈活計算、合并、拆分等轉(zhuǎn)換操作。目前,ETL工具的典型代表有:商業(yè)軟件:Informatica、IBMDatastage、OracleODI、MicrosoftSSIS等。開源軟件:Kettle、Talend、CloverETL、Ketl,Octopus等。Kettle簡介Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上運行,數(shù)據(jù)抽取高效穩(wěn)定。Kettle允許用戶管理來自不同數(shù)據(jù)庫的數(shù)據(jù),通過提供一個圖形化的用戶環(huán)境來描述想做什么,而不是怎么做。Kettle家族目前包括4個產(chǎn)品:Spoon、Pan、CHEF、Kitchen。Spoon允許用戶通過圖形界面方便地設(shè)計ETL轉(zhuǎn)換過程(Transformation)。Pan允許用戶批量運行由Spoon設(shè)計的ETL轉(zhuǎn)換。Pan是一個后臺執(zhí)行的程序,沒有圖形界面。允許用戶創(chuàng)建任務(wù)(Job)腳本,主要用于復(fù)雜的數(shù)據(jù)倉庫更新工作。Kitchen允許用戶批量運行由Chef設(shè)計的任務(wù),通常是使用一個調(diào)度器從而可以方便地啟動和控制ETL過程。Kettle使用定義一個名為sourcetable的表,用于記錄云平臺中的Host、Cluster和DataCenter的對應(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)建一個名為“源數(shù)據(jù)輸出”的表輸入步驟,雙擊進入“源數(shù)據(jù)輸出”,“數(shù)據(jù)庫連接”處選擇“新建”一個“源數(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)換對上一步的預(yù)覽得到的數(shù)據(jù)還需要做數(shù)據(jù)清洗和轉(zhuǎn)換,比如對數(shù)據(jù)的升降排序、和其他數(shù)據(jù)表鏈接、對空值的處理、對重復(fù)值的處理等,主要包括:數(shù)據(jù)補缺數(shù)據(jù)替換過濾行行排序行鏈接行去重行合并Kettle使用數(shù)據(jù)清洗和轉(zhuǎn)換例如:數(shù)據(jù)排序設(shè)置Kettle使用數(shù)據(jù)清洗和轉(zhuǎn)換例如:數(shù)據(jù)空值處理Kettle使用目標(biāo)數(shù)據(jù)的上載創(chuàng)建一個名為“目標(biāo)數(shù)據(jù)輸入”的表輸出步驟,配置目標(biāo)數(shù)據(jù)庫的參數(shù)信息。左側(cè)Design欄選擇“輸出”→“表輸出”,創(chuàng)建一個“目標(biāo)數(shù)據(jù)輸入”的表輸出步驟,在“數(shù)據(jù)庫連接”處新建一個“目標(biāo)數(shù)據(jù)庫”,輸入對應(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ù)庫表字段的對應(yīng)關(guān)系。其中“表字段”為目標(biāo)數(shù)據(jù)表字段,“流字段”為經(jīng)過Kettle處理的數(shù)據(jù)流字段,二者名稱可以一致也可以不一致,在配置的時候做好對應(yīng)即可。至此,源數(shù)據(jù)的抽取,數(shù)據(jù)流的清洗轉(zhuǎn)換和目標(biāo)數(shù)據(jù)庫的上載已經(jīng)配置完成,整個Kettle的轉(zhuǎn)換腳本也就完成了。Sqoop用于在Hadoop、Hive和HBase與傳統(tǒng)的數(shù)據(jù)庫(MySQL、Oracle和PostSQL等)間進行數(shù)據(jù)的傳遞。

數(shù)據(jù)轉(zhuǎn)換工具SqoopSqoop簡介Sqoop(SQL–to–Hadoop)是一款方便的在傳統(tǒng)關(guān)系型數(shù)據(jù)庫與Hadoop之間進行數(shù)據(jù)遷移的工具。它可以將一個關(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)換為對應(yīng)的MapReduce任務(wù),而后將關(guān)系型數(shù)據(jù)庫和Hadoop中的數(shù)據(jù)進行相互轉(zhuǎn)移,進而完成數(shù)據(jù)的拷貝。Sqoop的架構(gòu):Sqoop簡介借助于數(shù)據(jù)庫描述源數(shù)據(jù)的格式,Sqoop可以自動完成大部分?jǐn)?shù)據(jù)轉(zhuǎn)移工作。Sqoop使用MapReduce導(dǎo)入和導(dǎo)出數(shù)據(jù)不但可以通過并發(fā)提高數(shù)據(jù)轉(zhuǎn)移速度,還可以保證數(shù)據(jù)轉(zhuǎn)移的容錯能力。Sqoop基本用法用戶可以使用Sqoop從關(guān)系型數(shù)據(jù)庫導(dǎo)入數(shù)據(jù)到HDFS。Sqoop逐行從數(shù)據(jù)庫表中讀入數(shù)據(jù)到HDFS。因為導(dǎo)入過程是并行進行的,所以會產(chǎn)生一組HDFS文件。產(chǎn)生的文件可以是正文文件,原來數(shù)據(jù)庫表中的列之間用分號或者制表符進行隔離。產(chǎn)生的文件也可以是二進制Avro文件,還可以是由串行化記錄組成的順序文件(SequenceFiles)Sqoop導(dǎo)入數(shù)據(jù)的時候會生成一個封裝了導(dǎo)入數(shù)據(jù)庫表單行數(shù)據(jù)的Java類。Sqoop就是使用該Java類完成數(shù)據(jù)導(dǎo)入的。同時,開發(fā)工程師也可以在后續(xù)的MapReduce操作中使用該類進行數(shù)據(jù)處理。該類可以對SequenceFiles中的數(shù)據(jù)進行反串行化,也可以把數(shù)據(jù)串行化到SequenceFiles中。Sqoop基本用法對于導(dǎo)出的正文文件,該類可以對文件進行解析獲取每行每列的數(shù)據(jù)。所以,開發(fā)者通過使用該類能夠快速開發(fā)處理HDFS文件的MapReduce應(yīng)用。在對導(dǎo)入的數(shù)據(jù)進行各種大數(shù)據(jù)處理之后,可以把數(shù)據(jù)處理的結(jié)果導(dǎo)出到關(guān)系型數(shù)據(jù)庫。Sqoop導(dǎo)出數(shù)據(jù)的時候并發(fā)從HDFS中讀入一組用隔離符標(biāo)注的正文文件,解析成記錄格式并按行插入到數(shù)據(jù)庫表中。用戶可以對Sqoop的導(dǎo)入、導(dǎo)出和代碼生成按照自己的需求進行修改;還可以控制導(dǎo)出行的范圍和導(dǎo)出列的選擇。Sqoop基本用法Sqoop導(dǎo)入過程時的數(shù)據(jù)格式轉(zhuǎn)換:Sqoop導(dǎo)入數(shù)據(jù)用戶可以使用sqoopimport命令將數(shù)據(jù)從關(guān)系型數(shù)據(jù)庫導(dǎo)入HDFSSqoop導(dǎo)入數(shù)據(jù)首先用戶輸入一個sqoopimport命令,Sqoop會從關(guān)系型數(shù)據(jù)庫中獲取元數(shù)據(jù)信息,比如要導(dǎo)入的數(shù)據(jù)庫表的模型(Schema)是什么,這個表有哪些字段,這些字段都是什么數(shù)據(jù)類型等。它獲取這些信息之后,將輸入命令轉(zhuǎn)化為

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論