版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第7章ETL工具Kettle目
錄7.1Kettle的基本概念7.2Kettle的基本功能7.3安裝Kettle7.4數(shù)據(jù)抽取7.5數(shù)據(jù)清洗與轉(zhuǎn)換7.6數(shù)據(jù)加載7.1Kettle的基本概念7.1Kettle的基本概念一個(gè)數(shù)據(jù)抽取過(guò)程(如圖7-1所示)主要包括創(chuàng)建一個(gè)作業(yè)(Job),每個(gè)作業(yè)由一個(gè)或多個(gè)作業(yè)項(xiàng)(JobEntry)和連接作業(yè)項(xiàng)的作業(yè)跳(JobHop)組成。每個(gè)作業(yè)項(xiàng)可以是一個(gè)轉(zhuǎn)換(Transformation)或是另一個(gè)作業(yè)。一個(gè)轉(zhuǎn)換由一個(gè)或多個(gè)步驟(Step)和連接步驟的跳(Hop)組成。圖7-1一個(gè)數(shù)據(jù)抽取過(guò)程的構(gòu)成要素7.1Kettle的基本概念轉(zhuǎn)換主要用于數(shù)據(jù)的抽取(Extraction)、轉(zhuǎn)換(Transformation)以及加載(Load),比如讀取文件、過(guò)濾輸出行、數(shù)據(jù)清洗或加載到數(shù)據(jù)庫(kù)等步驟。一個(gè)轉(zhuǎn)換包含一個(gè)或多個(gè)步驟,每個(gè)步驟都是單獨(dú)的線程,當(dāng)啟動(dòng)轉(zhuǎn)換時(shí),所有步驟的線程幾乎并行執(zhí)行。步驟之間的數(shù)據(jù)以數(shù)據(jù)流方式傳遞。所有的步驟都會(huì)從它們的輸入跳中讀取數(shù)據(jù),并把處理過(guò)的數(shù)據(jù)寫(xiě)到輸出跳,直到輸入跳里不再有數(shù)據(jù)就終止步驟的運(yùn)行;當(dāng)所有步驟都終止了,整個(gè)轉(zhuǎn)換就終止了。由于轉(zhuǎn)換里的步驟依賴(lài)前一個(gè)步驟獲取數(shù)據(jù),因此轉(zhuǎn)換里不能有循環(huán)。7.1Kettle的基本概念相較于轉(zhuǎn)換,作業(yè)是更加高級(jí)的操作。作業(yè)由一個(gè)或多個(gè)作業(yè)項(xiàng)(作業(yè)或轉(zhuǎn)換)組成。所有的作業(yè)項(xiàng)是以某種自定義的順序串行執(zhí)行的。作業(yè)項(xiàng)之間可以傳遞一個(gè)包含了數(shù)據(jù)行的結(jié)果對(duì)象。當(dāng)一個(gè)作業(yè)項(xiàng)執(zhí)行完成后,再傳遞結(jié)果對(duì)象給下一個(gè)作業(yè)項(xiàng)。作業(yè)里可以有循環(huán)。跳是步驟之間帶箭頭的連接線,它定義了一個(gè)單向通道,用于連接兩個(gè)步驟,實(shí)現(xiàn)將數(shù)據(jù)從一個(gè)步驟(寫(xiě)入數(shù)據(jù)到行集)流向另一個(gè)步驟(從行集中讀取數(shù)據(jù))。跳是兩個(gè)步驟之間的被稱(chēng)為“行集”(RowSet)的數(shù)據(jù)行緩存(可以在轉(zhuǎn)換設(shè)置中定義行集大?。?。若行集滿(mǎn)了,則向行集寫(xiě)數(shù)據(jù)的步驟將停止寫(xiě)入,直到行集里又有空間。若行集空了,則從行集讀取數(shù)據(jù)的步驟就會(huì)停止讀取,直到行集里又有可讀取的數(shù)據(jù)行。跳對(duì)于向行集寫(xiě)入數(shù)據(jù)的步驟來(lái)說(shuō)是輸出跳,一個(gè)步驟可以擁有多個(gè)輸出跳;跳對(duì)于從行集中讀取數(shù)據(jù)的步驟來(lái)說(shuō)是輸入跳。作業(yè)跳是作業(yè)項(xiàng)之間帶箭頭的連接線,它定義了作業(yè)的執(zhí)行路徑。7.2Kettle的基本功能7.2Kettle的基本功能Kettle的基本功能包括轉(zhuǎn)換管理和作業(yè)管理。轉(zhuǎn)換管理主要包括輸入、輸出、轉(zhuǎn)換、應(yīng)用、流程、腳本、查詢(xún)、檢驗(yàn)、作業(yè)、映射和批量加載等功能(表7-1給出了常用的轉(zhuǎn)換控件及其相關(guān)說(shuō)明)。作業(yè)管理主要包括通用、郵件、文件管理、條件、腳本、批量加載等功能(表7-2給出了常用的作業(yè)控件及其相關(guān)說(shuō)明)。轉(zhuǎn)換類(lèi)別步驟/控件相關(guān)說(shuō)明輸入CSV文件輸入從本地的CSV文件中輸入數(shù)據(jù)
文本文件輸入從本地的文本文件中輸入數(shù)據(jù)
表輸入從數(shù)據(jù)庫(kù)的數(shù)據(jù)表中輸入數(shù)據(jù)
獲取系統(tǒng)信息讀取系統(tǒng)信息輸入數(shù)據(jù)輸出文本文件輸出將處理后的結(jié)果輸出到文本文件中
表輸出將處理后的結(jié)果輸出到數(shù)據(jù)庫(kù)的數(shù)據(jù)表中
插入/更新根據(jù)處理后的結(jié)果對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)表進(jìn)行插入更新。根據(jù)查詢(xún)條件中的字段判斷數(shù)據(jù)表中是否存在相關(guān)記錄,若存在,則進(jìn)行更新,否則進(jìn)行插入表7-1常用的轉(zhuǎn)換控件及其相關(guān)說(shuō)明7.2Kettle的基本功能轉(zhuǎn)換
值映射數(shù)據(jù)的映射列轉(zhuǎn)行將數(shù)據(jù)表的列轉(zhuǎn)換成數(shù)據(jù)表的行去除重復(fù)記錄從輸入流中去除重復(fù)的數(shù)據(jù),需要注意的是輸入流中的數(shù)據(jù)必須是已排序的唯一行(哈希值)從輸入流中去除重復(fù)的數(shù)據(jù),不需要對(duì)輸入流中的數(shù)據(jù)進(jìn)行排序字段選擇選擇需要的字段,過(guò)濾掉不要的字段,也可與數(shù)據(jù)庫(kù)字段對(duì)應(yīng)拆分字段將一個(gè)字段拆分成多個(gè)字段排序記錄基于某個(gè)字段值將數(shù)據(jù)進(jìn)行升序或降序處理行轉(zhuǎn)列將數(shù)據(jù)表的行轉(zhuǎn)成數(shù)據(jù)表的列增加常量增加需要的常量字段7.2Kettle的基本功能應(yīng)用
替換NULL值若某個(gè)字符串的值為NULL,則指定某個(gè)字符串的值進(jìn)行替換設(shè)置值為NULL若某個(gè)字符串的值等于指定的值,則將這個(gè)字符串的值設(shè)置為NULL流程空操作不做任何操作,一般充當(dāng)一個(gè)占位符
過(guò)濾記錄根據(jù)條件對(duì)數(shù)據(jù)進(jìn)行過(guò)濾分類(lèi)腳本Java代碼轉(zhuǎn)換的擴(kuò)展功能,編寫(xiě)Java腳本,對(duì)數(shù)據(jù)進(jìn)行相應(yīng)的處理
JavaScript代碼轉(zhuǎn)換的擴(kuò)展功能,編寫(xiě)JavaScript腳本,對(duì)數(shù)據(jù)進(jìn)行相應(yīng)的處理
執(zhí)行SQL腳本執(zhí)行SQL腳本,對(duì)數(shù)據(jù)進(jìn)行相應(yīng)的處理7.2Kettle的基本功能查詢(xún)
HTTPClient通過(guò)一個(gè)可以動(dòng)態(tài)設(shè)定參數(shù)的基本網(wǎng)址調(diào)用HTTPWeb服務(wù)流查詢(xún)將目標(biāo)表讀取到內(nèi)存,通過(guò)查詢(xún)條件對(duì)內(nèi)存中的數(shù)據(jù)集進(jìn)行查詢(xún)數(shù)據(jù)庫(kù)查詢(xún)根據(jù)設(shè)定的查詢(xún)條件對(duì)目標(biāo)表進(jìn)行查詢(xún),返回需要的結(jié)果字段連接
合并記錄合并兩個(gè)數(shù)據(jù)流,并根據(jù)某個(gè)關(guān)鍵字排序排序合并合并多個(gè)數(shù)據(jù)流,并且數(shù)據(jù)的行要基于某個(gè)關(guān)鍵字進(jìn)行排序作業(yè)
復(fù)制記錄到結(jié)果將數(shù)據(jù)寫(xiě)入正在執(zhí)行的任務(wù)中獲取變量獲取環(huán)境或Kettle變量設(shè)置變量設(shè)置環(huán)境變量7.2Kettle的基本功能表7-2常用的作業(yè)控件及其相關(guān)說(shuō)明作業(yè)類(lèi)別步驟/控件相關(guān)說(shuō)明通用
Start作業(yè)執(zhí)行的開(kāi)始Dummy作業(yè)執(zhí)行的結(jié)束作業(yè)使用新的作業(yè)執(zhí)行之前已定義好的作業(yè)成功提示作業(yè)執(zhí)行成功轉(zhuǎn)換使用作業(yè)執(zhí)行之前已定義好的轉(zhuǎn)換流程郵件
POP收信通過(guò)設(shè)置好的POP服務(wù)器地址收取郵件發(fā)送郵件發(fā)送作業(yè)執(zhí)行成功或者失敗的郵件文件管理
創(chuàng)建文件創(chuàng)建一個(gè)新的文件,若文件名已經(jīng)存在,則提示創(chuàng)建失敗并退出刪除一個(gè)文件刪除指定文件名的文件,若不存在指定的文件名稱(chēng),則提示刪除失敗復(fù)制文件將源文件的內(nèi)容復(fù)制到新創(chuàng)建的文件中或替換已存在的文件比較文件比較兩個(gè)文件中的內(nèi)容移動(dòng)文件將文件移動(dòng)到另一個(gè)目錄下解壓縮文件將作業(yè)文件進(jìn)行解壓或壓縮操作7.2Kettle的基本功能條件
檢查表是否存在檢查數(shù)據(jù)庫(kù)中的數(shù)據(jù)表是否存在檢查一個(gè)文件是否存在檢查指定的文件是否存在腳本
JavaScript編寫(xiě)JavaScript腳本,進(jìn)行相應(yīng)的數(shù)據(jù)處理Shell編寫(xiě)Shell腳本,進(jìn)行相應(yīng)的數(shù)據(jù)處理SQL編寫(xiě)SQL腳本,進(jìn)行相應(yīng)的數(shù)據(jù)處理批量加載
MySQL批量加載將本地文件中的數(shù)據(jù)批量加載到MySQL數(shù)據(jù)庫(kù)中SQLServer批量加載將本地文件中的數(shù)據(jù)批量加載到SQLServer數(shù)據(jù)庫(kù)中從MySQL批量導(dǎo)出到文件將MySQL數(shù)據(jù)庫(kù)中的數(shù)據(jù)批量導(dǎo)出到本地文件中7.3安裝Kettle7.3安裝Kettle在Windows系統(tǒng)中打開(kāi)瀏覽器,訪問(wèn)Kettle官網(wǎng)(/projects/pentaho/),下載Kettle安裝文件pdi-ce--324.zip?;蛘?,也可以直接到教材官網(wǎng)的“下載專(zhuān)區(qū)”的“軟件”目錄中下載pdi-ce--324.zip文件。把pdi-ce--324.zip解壓縮到“D:\”目錄下(或者也可以選擇一個(gè)其他目錄,比如“C:\”),會(huì)生成一個(gè)“data-integration”目錄,該目錄下就包含了Kettle。在data-integration目錄里包含了Spoon的啟動(dòng)文件,即spoon.bat,雙擊該文件就可以啟動(dòng)Spoon,啟動(dòng)界面如圖7-2所示。7.3安裝Kettle圖7-2Spoon啟動(dòng)界面7.3安裝Kettle啟動(dòng)成功以后的界面如圖7-3所示。圖7-3Spoon啟動(dòng)以后的歡迎界面7.4數(shù)據(jù)抽取7.4數(shù)據(jù)抽取7.4.1把文本文件導(dǎo)入到Excel文件中7.4.2把文本文件導(dǎo)入MySQL數(shù)據(jù)庫(kù)中(請(qǐng)直接參考教材)7.4.3把Excel文件導(dǎo)入到MySQL數(shù)據(jù)庫(kù)中(請(qǐng)直接參考教材)7.4.1把文本文件導(dǎo)入到Excel文件中這里給出一個(gè)實(shí)例,演示如何使用Kettle把文本文件導(dǎo)入到Excel文件中,具體包括如下步驟:創(chuàng)建文本文件;建立轉(zhuǎn)換;設(shè)計(jì)轉(zhuǎn)換;執(zhí)行轉(zhuǎn)換。7.4.1把文本文件導(dǎo)入到Excel文件中1.創(chuàng)建文本文件在“D:\”目錄下新建一個(gè)文本文件studentinfo.txt,其內(nèi)容如圖7-4所示,文件的第1行是字段名稱(chēng),包括sno、name、sex和age,字段之間用“|”隔開(kāi),其余行都是記錄,字段之間也是用“|”隔開(kāi)。圖7-4studentinfo.txt文件內(nèi)容7.4.1把文本文件導(dǎo)入到Excel文件中2.建立轉(zhuǎn)換在Spoon主界面的“主對(duì)象樹(shù)”欄目中,在“轉(zhuǎn)換”上面(如圖7-5所示)單擊鼠標(biāo)右鍵,在彈出的菜單中點(diǎn)擊“新建”。點(diǎn)擊Spoon主界面左上角的“保存”圖標(biāo),把這個(gè)轉(zhuǎn)換保存到某個(gè)路徑下并且名稱(chēng)為“text_to_excel”。圖7-5新建“轉(zhuǎn)換”7.4.1把文本文件導(dǎo)入到Excel文件中3.設(shè)計(jì)轉(zhuǎn)換在“核心對(duì)象”欄目中,在“輸入”控件里把“文本文件輸入”拖到右側(cè)設(shè)計(jì)區(qū)域,然后在“輸出”控件里把“Excel輸出”拖到右側(cè)設(shè)計(jì)區(qū)域,然后為這兩個(gè)控件建立連線(如圖7-6所示),這里的連線就是前文介紹過(guò)的“跳”。為這兩個(gè)控件建立連線的方法是,按住鍵盤(pán)上的Shift鍵,然后用鼠標(biāo)左鍵單擊“文本文件輸入”控件圖標(biāo),再用鼠標(biāo)左鍵單擊“Excel輸出”控件圖標(biāo),最后在其他空白區(qū)域單擊鼠標(biāo)左鍵,這樣就建立了一條從“文本文件輸入”到“Excel輸出”的連線。圖7-6放置文本文件輸入和Excel輸出兩個(gè)控件7.4.1把文本文件導(dǎo)入到Excel文件中雙擊設(shè)計(jì)區(qū)域的“文本文件輸入”控件,打開(kāi)設(shè)置界面,點(diǎn)擊“文件”選項(xiàng)卡,點(diǎn)擊“文件或目錄”右側(cè)的“瀏覽”按鈕(如圖7-7所示),把studentinfo.txt文件添加進(jìn)來(lái),然后點(diǎn)擊“增加”按鈕,studentinfo.txt文件就會(huì)被增加到“選中的文件”中,增加后的效果如圖7-8所示。圖7-7添加文件7.4.1把文本文件導(dǎo)入到Excel文件中圖7-8添加文件以后的效果7.4.1把文本文件導(dǎo)入到Excel文件中圖7-9設(shè)置“內(nèi)容”選項(xiàng)卡7.4.1把文本文件導(dǎo)入到Excel文件中在“字段”選項(xiàng)卡中(如圖7-10所示),點(diǎn)擊“獲取字段”按鈕,會(huì)彈出如圖7-11所示的樣本數(shù)據(jù)行數(shù)設(shè)置界面,直接點(diǎn)擊“確定”按鈕,會(huì)得到如圖7-12所示結(jié)果。這時(shí),點(diǎn)擊界面底部的“預(yù)覽記錄”,就可以看到如圖7-13所示的數(shù)據(jù)。最后,點(diǎn)擊界面底部的“確定”按鈕,完成文本文件輸入控件的設(shè)置。圖7-10設(shè)置“字段”選項(xiàng)卡7.4.1把文本文件導(dǎo)入到Excel文件中圖7-11設(shè)置樣本數(shù)據(jù)行數(shù)7.4.1把文本文件導(dǎo)入到Excel文件中圖7-12獲取字段以后的效果7.4.1把文本文件導(dǎo)入到Excel文件中圖7-13預(yù)覽記錄7.4.1把文本文件導(dǎo)入到Excel文件中雙擊設(shè)計(jì)區(qū)域的“Excel輸出”控件圖標(biāo),打開(kāi)設(shè)置界面(如圖7-14所示),在“文件”選項(xiàng)卡中,設(shè)置“文件名”為“D:\file”。圖7-14設(shè)置文件名7.4.1把文本文件導(dǎo)入到Excel文件中在“字段”選項(xiàng)卡中(如圖7-15所示),點(diǎn)擊界面底部的“獲取字段”按鈕,成功獲取字段以后的效果如圖7-16所示,然后把“sno”和“age”字段的“格式”設(shè)置為“#”。最后,點(diǎn)擊“確定”按鈕完成“Excel輸出”控件的設(shè)置。全部設(shè)置完成以后,需要保存設(shè)計(jì)文件。圖7-15“字段”選項(xiàng)卡7.4.1把文本文件導(dǎo)入到Excel文件中圖7-16獲取字段后的效果7.4.1把文本文件導(dǎo)入到Excel文件中4.執(zhí)行轉(zhuǎn)換在轉(zhuǎn)換設(shè)計(jì)界面中(如圖7-17所示),點(diǎn)擊三角形按鈕開(kāi)始執(zhí)行轉(zhuǎn)換,會(huì)彈出如圖7-18所示界面,在界面中點(diǎn)擊“啟動(dòng)”,如果轉(zhuǎn)換執(zhí)行成功,會(huì)顯示如圖7-19所示的效果,在兩個(gè)控件圖標(biāo)上都會(huì)顯示綠色的勾號(hào)。這時(shí),到D盤(pán)根目錄下就可以看到新生成的文件file.xls,可以使用Excel軟件打開(kāi)file.xls查看內(nèi)容(如圖7-20所示)。圖7-17運(yùn)行轉(zhuǎn)換7.4.1把文本文件導(dǎo)入到Excel文件中圖7-18轉(zhuǎn)換啟動(dòng)界面7.4.1把文本文件導(dǎo)入到Excel文件中圖7-19轉(zhuǎn)換執(zhí)行成功的效果7.4.1把文本文件導(dǎo)入到Excel文件中圖7-20file.xls文件內(nèi)容7.5數(shù)據(jù)清洗與轉(zhuǎn)換7.5數(shù)據(jù)清洗與轉(zhuǎn)換7.5.1使用Kettle實(shí)現(xiàn)數(shù)據(jù)排序7.5.2在Kettle中用正則表達(dá)式清洗數(shù)據(jù)(請(qǐng)直接參考教材)7.5.3使用Kettle去除缺失值(請(qǐng)直接參考教材)7.5.4使用Kettle轉(zhuǎn)化MySQL數(shù)據(jù)庫(kù)中的數(shù)據(jù)(請(qǐng)直接參考教材)7.5.1使用Kettle實(shí)現(xiàn)數(shù)據(jù)排序這里給出一個(gè)實(shí)例,演示如何使用Kettle實(shí)現(xiàn)數(shù)據(jù)排序,具體包括如下步驟:創(chuàng)建文本文件;建立轉(zhuǎn)換;設(shè)計(jì)轉(zhuǎn)換;執(zhí)行轉(zhuǎn)換。7.5.1使用Kettle實(shí)現(xiàn)數(shù)據(jù)排序1.創(chuàng)建文本文件在“D:\”目錄下新建一個(gè)文本文件score.txt,其內(nèi)容如圖7-51所示,文件的第1行是字段名稱(chēng),包括name和score,字段之間用分號(hào)隔開(kāi),其余行都是記錄,字段之間也是用分號(hào)隔開(kāi)。圖7-51score.txt文件內(nèi)容7.5.1使用Kettle實(shí)現(xiàn)數(shù)據(jù)排序2.建立轉(zhuǎn)換在Spoon主界面的“主對(duì)象樹(shù)”欄目中,在“轉(zhuǎn)換”上面(如圖7-52所示)單擊鼠標(biāo)右鍵,在彈出的菜單中點(diǎn)擊“新建”。點(diǎn)擊Spoon主界面左上角的“保存”圖標(biāo),把這個(gè)轉(zhuǎn)換保存到某個(gè)路徑下并且名稱(chēng)為“sort_data”。圖7-52新建“轉(zhuǎn)換”7.5.1使用Kettle實(shí)現(xiàn)數(shù)據(jù)排序3.設(shè)計(jì)轉(zhuǎn)換在“核心對(duì)象”欄目中,在“輸入”控件里把“文本文件輸入”拖到右側(cè)設(shè)計(jì)區(qū)域,然后在“轉(zhuǎn)換”控件里把“排序記錄”拖到右側(cè)設(shè)計(jì)區(qū)域,然后為這兩個(gè)控件建立連線(如圖7-53所示)。圖7-53放置文本文件輸入和排序記錄兩個(gè)控件7.5.1使用Kettle實(shí)現(xiàn)數(shù)據(jù)排序雙擊設(shè)計(jì)區(qū)域的“文本文件輸入”控件圖標(biāo),打開(kāi)設(shè)置界面(如圖7-54所示),點(diǎn)擊“文件或目錄”右側(cè)的“瀏覽”按鈕,添加文件“D:\score.txt”,然后,點(diǎn)擊“增加”按鈕,執(zhí)行效果如圖7-55所示。圖7-54添加文件7.5.1使用Kettle實(shí)現(xiàn)數(shù)據(jù)排序圖7-55添加文件以后的效果7.5.1使用Kettle實(shí)現(xiàn)數(shù)據(jù)排序在“內(nèi)容”選項(xiàng)卡中,設(shè)置分隔符為分號(hào)“;”(如圖7-56所示)。圖7-56設(shè)置“內(nèi)容”選項(xiàng)卡7.5.1使用Kettle實(shí)現(xiàn)數(shù)據(jù)排序在“字段”選項(xiàng)卡中(如圖7-57所示),點(diǎn)擊“獲取字段”按鈕,成功獲取字段以后的效果如圖7-58所示。圖7-57獲取字段圖7-58獲取字段成功以后的效果7.5.1使用Kettle實(shí)現(xiàn)數(shù)據(jù)排序這時(shí),點(diǎn)擊界面(如圖7-58所示)底部的“預(yù)覽記錄”按鈕,就可以預(yù)覽數(shù)據(jù)(如圖7-59所示)。最后,點(diǎn)擊界面底部的“確定”按鈕,完成“文本文件輸入”控件的設(shè)置。圖7-59預(yù)覽數(shù)據(jù)7.5.1使用Kettle實(shí)現(xiàn)數(shù)據(jù)排序雙擊設(shè)計(jì)區(qū)域的“排序記錄”控件圖標(biāo),打開(kāi)設(shè)置界面(如圖7-60所示),在“字段名稱(chēng)”下拉列表中選擇“score”,在“升序”下拉列表中選擇“是”,然后點(diǎn)擊“確定”按鈕完成設(shè)置。全部設(shè)置完成以后,需要保存設(shè)計(jì)文件。圖7-60排序記錄設(shè)置界面7.5.1使用Kettle實(shí)現(xiàn)數(shù)據(jù)排序4.執(zhí)行轉(zhuǎn)換在轉(zhuǎn)換設(shè)計(jì)界面中(如圖7-61所示),點(diǎn)擊三角形按鈕開(kāi)始執(zhí)行轉(zhuǎn)換,在彈出的界面中點(diǎn)擊“啟動(dòng)”,如果轉(zhuǎn)換執(zhí)行成功,會(huì)顯示如圖7-62所示的效果,在兩個(gè)控件圖標(biāo)上都會(huì)顯示綠色的勾號(hào)。這時(shí),在“執(zhí)行結(jié)果”的“Previewdata”選項(xiàng)卡中就可以預(yù)覽排序后的數(shù)據(jù)(如圖7-63所示)。圖7-61運(yùn)行轉(zhuǎn)換圖7-62轉(zhuǎn)換執(zhí)行成功7.5.1使用Kettle實(shí)現(xiàn)數(shù)據(jù)排序圖7-63排序后的數(shù)據(jù)7.6數(shù)據(jù)加載7.6數(shù)據(jù)加載7.6.1把本地文件加載到HDFS中(請(qǐng)直接參考教材)7.6.2把HDFS文件加載到MySQL數(shù)據(jù)庫(kù)中7.6.2把HDFS文件加載到MySQL數(shù)據(jù)庫(kù)中這里給出一個(gè)實(shí)例,演示如何使用Kettle把HDFS文件導(dǎo)入到MySQL數(shù)據(jù)庫(kù)中,具體包括如下步驟:新建HDFS文件;創(chuàng)建數(shù)據(jù)庫(kù);建立轉(zhuǎn)換;創(chuàng)建MySQL連接和Hadoop連接;設(shè)計(jì)轉(zhuǎn)換;執(zhí)行轉(zhuǎn)換。7.6.2把HDFS文件加載到MySQL數(shù)據(jù)庫(kù)中1.新建HDFS文件在Windows系統(tǒng)中打開(kāi)一個(gè)cmd窗口,啟動(dòng)Hadoop。在“D:\”目錄下新建一個(gè)文本文件student.txt,其內(nèi)容如圖7-140所示,文件的第1行是字段名稱(chēng),包括no、name、sex和age,字段之間用“|”隔開(kāi),其余行都是記錄,字段之間也是用“|”隔開(kāi)。圖7-140student.txt文件內(nèi)容7.6.2把HDFS文件加載到MySQL數(shù)據(jù)庫(kù)中在cmd窗口中執(zhí)行如下命令,把本地文件student.txt上傳到HDFS系統(tǒng)的根目錄下:>cdc:\hadoop-3.1.3\bin>hadoopfs-putD:\book.txthdfs://localhost:9000/可以繼續(xù)執(zhí)行如下命令查看HDFS中student.txt的內(nèi)容:>hadoopfs-cathdfs://localhost:9000/student.txt或者,也可以打開(kāi)瀏覽器,訪問(wèn)“http://localhost:9870”,使用HDFS的WEB管理界面查看文件內(nèi)容。7.6.2把HDFS文件加載到MySQL數(shù)據(jù)庫(kù)中2.創(chuàng)建數(shù)據(jù)庫(kù)在Windows系統(tǒng)中啟動(dòng)MySQL服務(wù),打開(kāi)MySQL命令行客戶(hù)端,執(zhí)行如下SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù):CREATEDATABASEkettle;繼續(xù)執(zhí)行如下SQL語(yǔ)句創(chuàng)建student_table表:USEkettle;#------------創(chuàng)建表student_tableDROPTABLEIFEXISTSstudent_table;CREATETABLEstudent_table(noint,nameVARCHAR(10),sexVARCHAR(2),ageint);7.6.2把HDFS文件加載到MySQL數(shù)據(jù)庫(kù)中3.建立轉(zhuǎn)換在Spoon主界面的“主對(duì)象樹(shù)”欄目中,在“轉(zhuǎn)換”上面(如圖7-141所示)單擊鼠標(biāo)右鍵,在彈出的菜單中點(diǎn)擊“新建”。點(diǎn)擊Spoon主界面左上角的“保存”圖標(biāo),把這個(gè)轉(zhuǎn)換保存到某個(gè)路徑下并且名稱(chēng)為“hdfs_to_mysql”。圖7-141新建“轉(zhuǎn)換”7.6.2把HDFS文件加載到MySQL數(shù)據(jù)庫(kù)中3.創(chuàng)建MySQL連接和Hadoop連接參照本章7.4.2節(jié)的內(nèi)容,建立一個(gè)名稱(chēng)為“mysql”的數(shù)據(jù)庫(kù)連接(如圖7-142所示)。圖7-142建立數(shù)據(jù)庫(kù)連接7.6.2把HDFS文件加載到MySQL數(shù)據(jù)庫(kù)中參照本章7.6.1節(jié)的內(nèi)容,建立一個(gè)名稱(chēng)為“Hadoop3”的Hadoop連接(如圖7-143所示)。圖7-143建立Hadoop連接7.6.2把HDFS文件加載到MySQL數(shù)據(jù)庫(kù)中4.設(shè)計(jì)轉(zhuǎn)換在Spoon主界面的“核心對(duì)象”的“BigData”里面,找到“Hadoopfileinput”控件,放置到設(shè)計(jì)區(qū)域,在“核心對(duì)象”的“輸出”里面,找到“表輸出”控件,放置到設(shè)計(jì)區(qū)域,為兩個(gè)控件建立連線(如圖7-144所示)。圖7-144放置“Hadoopfileinput”和“表輸出”控件7.6.2把HDFS文件加載到MySQL數(shù)據(jù)庫(kù)中在設(shè)計(jì)區(qū)域雙擊“Hadoopfileinput”控件圖標(biāo),打開(kāi)設(shè)置界面(如圖7-145所示),用鼠標(biāo)點(diǎn)擊“Environment”下面的空白單元格,會(huì)出現(xiàn)如圖7-146所示的下拉列表,選中“Hadoop3”。圖7-145“Hadoopfileinput”設(shè)置界面7.6.2把HDFS文件加載到MySQL數(shù)據(jù)庫(kù)中圖7-146設(shè)置Environment7.6.2把HDFS文件加載到MySQL數(shù)據(jù)庫(kù)中點(diǎn)擊“File/Folder”下面的空白單元格,會(huì)出現(xiàn)如圖7-147所示的效果,點(diǎn)擊省略號(hào)按鈕,會(huì)彈出如圖7-148所示的界面,選中HDFS中的student.txt文件,點(diǎn)擊“OK”按鈕,返回到“Hadoopfileinput”設(shè)置界面。圖7-147設(shè)置File/Folder7.6.2把HDFS文件加載到MySQL數(shù)據(jù)庫(kù)中圖7-148選中HDFS中的student.txt文件7.6.2把HDFS文件加載到MySQL數(shù)據(jù)庫(kù)中點(diǎn)擊“Hadoopfileinput”設(shè)置界面的“內(nèi)容”選項(xiàng)卡,會(huì)出現(xiàn)如圖7-149所示的界面,“文件類(lèi)型”選擇“CSV”,把“分隔符”設(shè)置為“|”,“頭部”后面的勾號(hào)選中,設(shè)置“頭部行數(shù)量”為1。圖7-149設(shè)置分隔符7.6.2把HDFS文件加載到My
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 體育館環(huán)境衛(wèi)生承諾書(shū)
- 2024年研發(fā)設(shè)計(jì)與技術(shù)咨詢(xún)協(xié)議3篇
- 證券公司投資資產(chǎn)管理
- SP館租賃合同模板
- 鐵路軌道施工安全合同
- 設(shè)計(jì)工作室隔斷租賃協(xié)議
- 跨境支付項(xiàng)目澄清函參考模板
- 環(huán)保行業(yè)污染防治培訓(xùn)費(fèi)管理辦法
- 能源利用評(píng)審員管理辦法
- 機(jī)場(chǎng)化糞池改造工程合同
- 數(shù)學(xué)文化欣賞
- 脊柱區(qū)1教學(xué)講解課件
- KK5-冷切鋸操作手冊(cè)-20151124
- 教你炒紅爐火版00纏論大概
- 消防管道施工合同
- 大學(xué)生計(jì)算與信息化素養(yǎng)-北京林業(yè)大學(xué)中國(guó)大學(xué)mooc課后章節(jié)答案期末考試題庫(kù)2023年
- 2023年國(guó)開(kāi)大學(xué)期末考復(fù)習(xí)題-3987《Web開(kāi)發(fā)基礎(chǔ)》
- 《駱駝祥子》1-24章每章練習(xí)題及答案
- 國(guó)際金融課后習(xí)題答案(吳志明第五版)第1-9章
- 《基于杜邦分析法周大福珠寶企業(yè)盈利能力分析報(bào)告(6400字)》
- 全國(guó)英語(yǔ)等級(jí)考試三級(jí)全真模擬試題二-2023修改整理
評(píng)論
0/150
提交評(píng)論