Kettle開發(fā)使用手冊_第1頁
Kettle開發(fā)使用手冊_第2頁
Kettle開發(fā)使用手冊_第3頁
Kettle開發(fā)使用手冊_第4頁
Kettle開發(fā)使用手冊_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、版本歷史說明版本作者日期備注1.0彭偉峰2017.04.111.Kettle介紹11什么是KettleKettle是純Java編寫的、免費開源的ETL工具,主要用于抽取(Extraction)、轉(zhuǎn)換(Transformation)、和裝載(Loading)數(shù)據(jù)。Kettle中文名稱叫水壺,該項目的主程序員MATT希望把各種數(shù)據(jù)放到一個壺里,然后以一種指定的格式流出。在這種思想的設計下,Kettle廣泛用于不同數(shù)據(jù)庫之間的數(shù)據(jù)抽取,例如Mysql數(shù)據(jù)庫的數(shù)據(jù)傳到Oracle,Oracle數(shù)據(jù)庫的數(shù)據(jù)傳到Greenplum數(shù)據(jù)庫。1.2.Kettle的安裝Kettle工具是不需要安裝的,直接網(wǎng)上下

2、載解壓就可以運行了。不過它依賴于Java,需要本地有JDK環(huán)境,如果是安裝4.2或5.4版本,JDK需要1.5以上的版本,推薦1.6或1.7的JDK。運行Kettle直接雙擊里面的批處理文件spoon.bat就行了,如圖1.1所示:CENSEtt全llb.zote&tllLKtirDataIntegrfftiortaposncr.shREADME-CriiX.brticnpon.bdrR.EADME_M.txtImpon.shwi扁rmplm5.sliIIInbswtkltchen.siiset-pe*KdhSpOOfl.COmrnandSpOORpIcarteh%READMENFOBRJGh

3、iT.twtlaiwichersimpfe-jndCarte-.bAtPenWioDstakit&girAtlcn_O&t_LiCCfl&SLil.SpoorConEncr.batREADMEL1NUX.MKkchsnbijset-jwntaho-flrw-batPdnMSpoonDebug.bat:圖1.12.Kettle腳本開發(fā)2.1.建立資源庫(repository倉庫)Repository倉庫是用來存儲所有kettle文件的文件系統(tǒng),由于數(shù)據(jù)交換平臺服務器管理kettle文件也是用Repository倉庫,因此我們這邊本地的kettle開發(fā)環(huán)境也是要用到該資源庫。建立資源庫的方式是工具

4、-資源庫-連接資源庫,這時候彈出一個窗口,我們點擊右上角的+號,跟著點擊下面的kettle選項,按確定,如圖2.1所示:圖2.1跟著在右上角選擇一個目錄,建議在kettle路徑下新建repository文件夾,再選擇這個文件夾作為根目錄,名稱和描述可以任意寫,如圖2.2所示:霸立欄建源庫說詈根目錄-ilesXpdi-oe-S.l.0.1-130data-integrationrepcsrtcry|瀏覽回|只讀資源庫孑Hidehiddenfoldersandfiles?圖2.2建完后會kettle工具會自動連接到repository資源庫,每次打開kettle也會彈出一個窗口讓你先連接到資源庫。

5、在連接到資源庫的情況下打開文件就是資源庫所在目錄了,如圖2.3所示。注意你在資源庫建的目錄結(jié)構(gòu)要跟數(shù)據(jù)交換平臺的目錄結(jié)構(gòu)一致,這樣寫好kettle腳本,保存后放的路徑能跟交換平臺的目錄結(jié)構(gòu)一致了。對MQ%1=畧稱英型帙用吿境生變比的曰朗茵述V口sjcs口數(shù)富它空TQttffl口業(yè)藥St丿口審在荒HiDE_MHPV_T.S1_DWJFDJXX匸于軸KJe_SJCSJV_TESTTBAINSFQh-JOR2Q17/Q4/121,2017/04/121莫豈造桎IS課.主旳壽圖2.32.2.在目標數(shù)據(jù)庫里新建表在做數(shù)據(jù)遷移的時候我們需要先在目標數(shù)據(jù)庫建立與源數(shù)據(jù)庫類似的表結(jié)構(gòu),才能在這兩張表之間做數(shù)據(jù)

6、遷移,以oracle數(shù)據(jù)庫到gp數(shù)據(jù)庫,T_SF_DWJFDJXX_TEST表做數(shù)據(jù)遷移為例,我們先建類似的表結(jié)構(gòu),首先先把表結(jié)構(gòu)的代碼拷出來:createtableT_SF_DWJFDJXX_TEST(NSRNBMNUMBER(10)notnull,DWSBHVARCHAR2(18)notnull,JFDWNBMNUMBER(10)notnull,HYFL_DMCHAR(1)notnull,JFDWLX_DMCHAR(3)notnull,SBJC_DMCHAR(2)notnull,SBGLJG_DMVARCHAR2(11)notnull,SWGLJG_DMVARCHAR2(11)notnul

7、l,SBDJ_ZTCHAR(2)notnull,DJSLRY_DMVARCHAR2(11),DJSL_RQDATE,LRRY_DMVARCHAR2(11),XGRY_DMVARCHAR2(11),DJ_RQDATE,DJJG_DMVARCHAR2(11),LR_SJTIMESTAMP(6),XG_SJTIMESTAMP(6),ZDFY_BJCHAR(1),XMMCVARCHAR2(100),KNQYBZ_DMCHAR(1),ZDYCKJN_BJCHAR(1),SJJHPT_SJTIMESTAMP(6),SJJHPT_DZNUMBER(14);跟著在這個表結(jié)構(gòu)的基礎上,在目標數(shù)據(jù)庫創(chuàng)建新表。需要

8、注意的是,gp數(shù)據(jù)庫的數(shù)據(jù)類型有些跟oracle的一樣,有些不同。相同的就不用改了,不同的就改下。以上面的數(shù)據(jù)類型為例,相同的有char、date、timestamp,不同的是varchar2和number,因此,varchar2(n)要改成varchar(n),number(n)要改成integer(注意不帶數(shù)字長度n)。建完之后,我們就可以在這不同數(shù)據(jù)庫的兩張表之間進行數(shù)據(jù)遷移或數(shù)據(jù)定時傳輸。23源數(shù)據(jù)庫和目標數(shù)據(jù)庫的jndi設置Jndi是kettle連接數(shù)據(jù)庫的配置文件,相當于oracle的tns。Jndi設置的目錄是在kettle目錄下的simple-jndi文件夾里,打開后編輯per

9、ties來設置jndi,下面附上公司揭陽涉稅項目oracle到gp數(shù)據(jù)庫的jndi設置,分別是源端oracle數(shù)據(jù)庫和目標端gp數(shù)據(jù)庫。配置信息的斜杠左邊是jndi名,這里jndi的命名規(guī)則是數(shù)據(jù)庫名_用戶名,注意本地的jndi名要跟交換平臺的jndi名一致。配置信息的斜杠右邊分別是數(shù)據(jù)庫類型、驅(qū)動、數(shù)據(jù)庫地址、用戶名和密碼。注意,相同數(shù)據(jù)庫配置寫法相同,不同數(shù)據(jù)庫的配置寫法略有不同,像下面的oracle和gp數(shù)據(jù)庫的driver和url地址寫法就不一樣。oracle_db_mhpt/type=javax.sql.DataSourceoracle_db_mhpt/driver=oracle.j

10、dbc.driver.OracleDriveroracle_db_mhpt/url=jdbc:oracle:thin:1:1521:zrmhdboracle_db_mhpt/user=db_mhptoracle_db_mhpt/password=DB_MHPTgp_public/type=javax.sql.DataSourcegp_public/driver=org.postgresql.Drivergp_public/url=jdbc:postgresql:/65:5432/postgresgp_public/database=8gp_public/user=gpadmingp_publi

11、c/password=gpadmin2.4.寫kettle腳本Kettle腳本有兩種,ktr腳本跟kjb腳本,其中ktr負責執(zhí)行,具體要做什么由ktr來負責;kjb負責調(diào)度,調(diào)用一個或多個ktr。Ktr和kjb的關系類似于像員工和領導之間,員工負責具體的事務操作,領導負責計劃安排工作。新建ktr腳本可以點擊左上角的文件一新建-轉(zhuǎn)換,新建kjb腳本就文件-新建作業(yè)。我們這里傳輸數(shù)據(jù)只要用到kjb腳本,一張表的數(shù)據(jù)傳輸要有1個腳本。首先先新建一個ktr文件,如圖2.4所示,跟著我們按照主界面的提示拖動主鍵來操作。拖動組件在核心對象的組件庫里。ACJ強Cj繞計n掐出口抑本口連按話Spoon-repo

12、sitDry轉(zhuǎn)換1堂件耳g確執(zhí)齊工具蛋助由日mh石、Drag&dropfromthe/designpaneltobegin.KTR_SJCS_J_TEST卩:(??換1;ICJRSJCS.JYTESTII口嚳I?爲耳冒100%-riInputriSfrA口彌口應用口BdServer口查問-匚J載據(jù)包險-rRigDataLlAgilein加看口Palo圖2.4跟著我們需要4個組件,分別是獲取變量、表輸入、字符串操作、插入/更新,先從組件庫里找到這些組件然后拖動到右邊面板上,查找組件可以用組件名稱來在組建的搜索框里搜索。拖動后如圖2.5所示。圖2.5然后給他們組件之間建立連接,用拉箭頭來連接即可,

13、如圖2.6所示:回養(yǎng)輸入字待豐操作圖2.6組件之間連接完之后,跟著雙擊組件一個個編輯。第一步是獲取變量,在獲取變量前首先要設置入?yún)⒂脕慝@取變量,設置變量先雙擊主對象樹的ktr名(轉(zhuǎn)換1是未保存文件到本地的默認名),跟著設置命名參數(shù)。如圖2.7跟2.8所示。其中start_timestamp和end_timestamp這兩個是數(shù)據(jù)交換平臺服務器上默認的用于增量抽取數(shù)據(jù)的兩個入?yún)?,分別表示數(shù)據(jù)開始時間跟數(shù)據(jù)結(jié)束時間。這里填上了默認值方便測試。測覽器卜Steps(歩驟)!Hops(節(jié)點連接數(shù)據(jù)庫分區(qū)丸hM匕子皈務雖口Kettleschen-Hadoopdustersr0主對最樹x藝核心對彖飆銘翁e-

14、ms_銘鐵8W.fi|前time冊psiartjine咖p2D17-02-01如征01圖2.7圖2.8設置入?yún)⒑笤倬庉嫬@取變量的組件,這里名稱跟入?yún)⒁粯?,kettle變量名的寫法是$Variables,類型我們選擇string,因為服務器上交換平臺傳進來的start_timestamp和end_timestamp參數(shù)也是string類型的,我們這里跟它一致。也如圖2.9所示:步驟名稱莪取變畐芋段:辛名稱稻式長庭精1start_timest.$tart_timestampString2end_tim亡或日$end_;iinestampString圖2.9第二步是表輸入,首先要先連接數(shù)據(jù)庫,之前我

15、們在本地文件上配置了jndi,這里jndi就用得上。新建或編輯數(shù)據(jù)庫連接,選擇好連接的數(shù)據(jù)庫,還有jndi連接方式,再填上jndi名稱和連接名稱,設置完了就點擊左下角的測試來測試本地能不能連上數(shù)據(jù)庫。連上了我們才做其他的步驟。口軟堀日至扌忘一瞬i&I連援辿隹接侶稱:連空翼型;OracleoracIe_db_mhptJNDI-SNative(JDBQjOrmulmIR.DEPaloMOLARServerPostgreSQLRedshift圖2.10連通好后,寫好sql語句。這里sql語句用到變量,kettle變量的寫法是$variables,而使用變量要在左右兩端再加上單引號,變成variabl

16、es。注意數(shù)據(jù)庫后臺的日期類型是date,而變量是字符串類型,因此需要做個變量的類型轉(zhuǎn)換。因為有使用變量,所以需要勾上“替換sql語句里的變量”單選框。設置好后可以預覽下數(shù)據(jù)看下。行*?!128Help竝啟庫連繪oracle_to_date55lart_tinestenp?.YYlf-M-DDBEUQ.HI:55)占ffDtsjjhpt_sj佔to_date(1i(eacLtiMBtajip1.irTTY-MK-DDHB24:HI:SS1)圖2.11第三步是字段去除左右空格,編輯“字符串操作”,點getfields獲取從上個步驟表表輸入獲取的字段名,然后把trimtype全部選擇both,意思

17、是去除字段左右兩端的空格。如果getfields得到的字段有start_timestamp和end_timestamp這兩個,這兩個多余的,就刪去。如下圖所示:Stepname再InbtreamfL.Out-stre-iamf_Trimty.ILawer/LFp.PAddmgPadchdrPadLnL.InitCapE-5capeDigitsRc-mawe-Specialcha.1WSBHibothnonenonestownonenone2HVFL_DMbotilnoflenonetownonenoneJJFDWLX_DMbatiinonencrrt!Montnanis門口n皀4SBK_DMb

18、athnonencnsMonenciriisnani=5SBGUG_DMbadinonenoneNbrwnonenone&SliIITfi?E100%-圖2.153.在數(shù)據(jù)交換平臺設置定時任務以公司這邊的數(shù)據(jù)交換平臺為例(admin/admin),如果交換平臺的jndi設置沒有設置的話,那么要首先設置這樣跑kettle腳本的話才能連到數(shù)據(jù)庫,注意本地kettle的jndi名要跟交換平臺的jndi名一致,需要統(tǒng)一命名。圖3.1跟著將腳本放上服務器,可以在頁面上上傳文件到服務器。瓏e頁伽題縫匿-記JNDIggg甲.WjEfMBg一.周岌平白狀視查詢_.處共斛張話過腔片置彎JND丁配丑占殺統(tǒng)存世一粘

19、觀能代咼狀護饗機構(gòu)淮護_崗位仔類維護業(yè)務&關代碼維護卜*于宜用審數(shù)握護-k丘淮護_.崗位推護機構(gòu)職.能叩維護一羸機構(gòu)崗社垂護港機枸崗世職能側(cè)樂護_于應用地址維護嗨功艷射維護機構(gòu)崗世人員維護一雜鬲包維護程目錄營艷密Eiivaiisjca救擁倉.年申目社保I-Q曲務農(nóng)L啦事Lxq祝務彩(esiL黑teFsr11lTf=i定時如行隅圖自運行狀態(tài):砒目錄Ifl1陳目錄走時器若稱重命售目錄1上隹瘟程文件圖3.2上傳好后,需要先跑一回腳本跑成功才能設置定時調(diào)度,所以我們先運行一次。注意數(shù)據(jù)的起始時間(start_timestamp)默認是1970年,首次運行可以改下。數(shù)據(jù)的結(jié)束時間(end_timestamp)是當前的時間點。超目親Etaji巴1-1唔KJCtl圖3.3運行成功后,跟著再設定時任務,按要求設置調(diào)度頻率蠱程

溫馨提示

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

最新文檔

評論

0/150

提交評論