<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ETL高級(jí)教程

    Posted on 2008-01-28 19:20 shenxiangl 閱讀(4360) 評(píng)論(6)  編輯  收藏 所屬分類(lèi): ETL
    ETL高級(jí)教程

        在昨天的帖子里面,我介紹了一些ETL初級(jí)的東西,不知道大家是否已經(jīng)掌握,我現(xiàn)在介紹一些Kettle應(yīng)用中,比較有幫助的一些地方。

    1,Kettle跨平臺(tái)使用。
        例如:在AIX下(AIX是IBM商用UNIX操作系統(tǒng),此處在LINUX/UNIX同樣適用),運(yùn)行Kettle的相關(guān)步驟如下:
        1)進(jìn)入到Kettle部署的路徑
        2)執(zhí)行 chmod *.sh,將所有shell文件添加可執(zhí)行權(quán)限
        3)在Kettle路徑下,如果要執(zhí)行transformation,就運(yùn)行./pan.sh -file=?.ktr -debug=debug -log=log.log
        其中。-file說(shuō)明你要運(yùn)行的transformation文件所在的路徑;-debug說(shuō)明日志輸出的級(jí)別;-log說(shuō)明日志輸出的路徑
        4)同理,對(duì)于job的執(zhí)行,請(qǐng)將./pan.sh更換成./kitchen.sh,其他部分說(shuō)明不變。

    2,Kettle環(huán)境變量使用。
        在transformation中,Core Objects-->Job-->Set Variables,可疑設(shè)置環(huán)境變量,對(duì)于絕對(duì)路徑和相對(duì)路徑的轉(zhuǎn)換很有幫助,Kettle的跨平臺(tái)很大程度依靠他的

    3,其它功能的使用。
        其它功能包括DB存儲(chǔ)過(guò)程調(diào)用,流查詢(xún),值映射,聚合記錄等,各位自行摸索,有問(wèn)題可以和我聯(lián)系:)

    4,Kettle定時(shí)功能。
        在Job下的start模塊,有一個(gè)定時(shí)功能,可以每日,每周等方式進(jìn)行定時(shí),對(duì)于周期性的ETL,很有幫助。

    5,Kettle經(jīng)驗(yàn)之日志。
        Kettle對(duì)于日志的處理,存在一個(gè)BUG,看過(guò)上一篇的人或許已經(jīng)看到了我的留言,Kettle對(duì)于日志處理有一個(gè)BUG,當(dāng)日志多于49M(不是50M,也不是49M),Kettle就會(huì)自動(dòng)停止,這一點(diǎn)我在源碼里面也沒(méi)有找到對(duì)應(yīng)的設(shè)置和約束,原因還找不到,因?yàn)槭侨罩緵](méi)有寫(xiě),所以原因也不好跟蹤還不知道具體原因。

    6,Kettle之效率提升。
        Kettle作為一款ETL工具,肯定無(wú)法避免遇到效率問(wèn)題,當(dāng)很大的數(shù)據(jù)源輸入的時(shí)候,就會(huì)遇到效率的問(wèn)題。對(duì)此有幾個(gè)解決辦法:
        1)數(shù)據(jù)庫(kù)端創(chuàng)建索引。對(duì)需要進(jìn)行查詢(xún)的數(shù)據(jù)庫(kù)端字段,創(chuàng)建索引,可以在很大程度上提升查詢(xún)的效率,最多的時(shí)候,我不創(chuàng)建索引,一秒鐘平均查詢(xún)4條記錄,創(chuàng)建索引之后,一秒鐘查詢(xún)1300條記錄。
        2)數(shù)據(jù)庫(kù)查詢(xún)和流查詢(xún)注意使用環(huán)境。因?yàn)閿?shù)據(jù)庫(kù)查詢(xún)?yōu)閿?shù)據(jù)輸入端輸入一條記錄,就對(duì)目標(biāo)表進(jìn)行一次查詢(xún),而流查詢(xún)則是將目標(biāo)表讀取到內(nèi)存中,數(shù)據(jù)輸入端輸入數(shù)據(jù)時(shí),對(duì)內(nèi)從進(jìn)行查詢(xún),所以,當(dāng)輸入端為大數(shù)據(jù)量,而被查詢(xún)表數(shù)據(jù)量較小(幾百條記錄),則可以使用流查詢(xún),畢竟將目標(biāo)表讀到內(nèi)存中,查詢(xún)的速度會(huì)有非常大的提升(內(nèi)存的讀寫(xiě)速度是硬盤(pán)的幾百倍,再加上數(shù)據(jù)庫(kù)自身?xiàng)l件的制約,速度影響會(huì)更大)。同理,對(duì)于目標(biāo)表是大數(shù)據(jù)量,還是建議使用數(shù)據(jù)庫(kù)查詢(xún),不然的話,一下子幾百M(fèi)的內(nèi)存被干進(jìn)去了,還是很恐怖的。
        3)謹(jǐn)慎使用javascript腳本,因?yàn)閖avascript本身效率就不高,當(dāng)你使用js的時(shí)候,就要考慮你每一條記錄,就要執(zhí)行一次js所需要的時(shí)間了。
        4)數(shù)據(jù)庫(kù)commit次數(shù),一條記錄和一百條記錄commit對(duì)效率的影響肯定是不一樣的。
        5)表輸入的sql語(yǔ)句的寫(xiě)法。有些人喜歡在表輸入的時(shí)候,將所有關(guān)聯(lián)都寫(xiě)進(jìn)去,要么from N多個(gè)表,要么in來(lái)in去,這樣,就要面對(duì)我在2)里面說(shuō)道的問(wèn)題,需要注意。
        6)注意日志輸出,例如選擇數(shù)據(jù)庫(kù)更新方式,而且日志級(jí)別是debug,那么后臺(tái)就會(huì)拼命的輸出日志,會(huì)在很大程度上影響速度,此處一定要注意。

    7,常見(jiàn)的調(diào)試BUG。
        Kettle提供了很多調(diào)試的解決辦法,但是對(duì)于常見(jiàn)的調(diào)試BUG還是能避免就避免。
        1)路徑問(wèn)題。我最常遇到的問(wèn)題就是在windows下調(diào)試成功,但是部署到UNIX下出問(wèn)題,忘記將windows下路徑變成unix下,經(jīng)常會(huì)出現(xiàn)問(wèn)題。
        2)輸出端,數(shù)據(jù)庫(kù)插入更新選擇不對(duì)。輸出端,提供了三種數(shù)據(jù)庫(kù)輸出的辦法,數(shù)據(jù)庫(kù)輸出,插入/更新,更新,對(duì)于這三種,各有利弊,如果你知道數(shù)據(jù)庫(kù)輸出,完全是插入,如果有重復(fù)數(shù)據(jù),則會(huì)報(bào)錯(cuò);插入更新和更新,因?yàn)楦聰?shù)據(jù)時(shí),后臺(tái)輸出很多日志,會(huì)導(dǎo)致效率很低。
       

        總體來(lái)說(shuō),Kettle還是一個(gè)很不錯(cuò)的ETL工具,在開(kāi)源軟件里面并不多見(jiàn),以后有Kettle相關(guān)的問(wèn)題,大家可疑相互探討。

    Feedback

    # re: ETL高級(jí)教程  回復(fù)  更多評(píng)論   

    2008-01-29 09:56 by li
    好 會(huì)常來(lái)看的

    # re: ETL高級(jí)教程  回復(fù)  更多評(píng)論   

    2008-06-27 14:18 by 細(xì)穎
    感謝樓主,最近要在正式環(huán)境中部署kettle了,心里沒(méi)底~~

    # re: ETL高級(jí)教程  回復(fù)  更多評(píng)論   

    2008-07-26 15:35 by morph
    在使用KETTEL的過(guò)程中,遇到2個(gè)問(wèn)題,請(qǐng)教一下:
    1.在轉(zhuǎn)換里使用了[調(diào)用DB存儲(chǔ)過(guò)程],數(shù)據(jù)庫(kù)是ORACLE,編寫(xiě)的存儲(chǔ)過(guò)程必須要帶參數(shù),在[調(diào)用DB存儲(chǔ)過(guò)程]里才能看到該存儲(chǔ)過(guò)程.否則就看不到
    2.在一個(gè)轉(zhuǎn)換中,僅放了一個(gè)[調(diào)用DB存儲(chǔ)過(guò)程],執(zhí)行無(wú)效(不報(bào)錯(cuò)),但放在有多個(gè)接點(diǎn)的轉(zhuǎn)換里,就能成功執(zhí)行,為什么?

    # re: ETL高級(jí)教程[未登錄](méi)  回復(fù)  更多評(píng)論   

    2008-07-26 15:40 by shenxiangl
    第一個(gè)不是很理解理解,要帶參數(shù)就用前面的環(huán)節(jié)傳個(gè)參數(shù)進(jìn)來(lái),傳進(jìn)來(lái)和存儲(chǔ)過(guò)程里面的參數(shù)名稱(chēng)匹配了就可以了
    第二個(gè)是一定要注意的,kettle每一個(gè)環(huán)節(jié)都必須要有輸入端和輸出端,即使不需要輸出,也要有一個(gè)空操作,所以單獨(dú)的DB存儲(chǔ)過(guò)程根本不會(huì)起作用的

    # re: ETL高級(jí)教程[未登錄](méi)  回復(fù)  更多評(píng)論   

    2009-03-26 10:39 by 王鵬
    您好,請(qǐng)教個(gè)問(wèn)題,怎么可以設(shè)置文件名的變量? 比如說(shuō)有個(gè)文件名為question20081231.txt,下個(gè)月就變成question20090131.txt
    在下個(gè)月變?yōu)閝uestion20090228請(qǐng)問(wèn),我怎么截取文件名后面總是為變化的文件名?
    請(qǐng)回復(fù),如有例子希望發(fā)一份萬(wàn)分感謝, wangforpeng@163.com

    # re: ETL高級(jí)教程  回復(fù)  更多評(píng)論   

    2010-04-14 22:48 by winie
    請(qǐng)問(wèn) 你的msn是多少? 我想 問(wèn)個(gè)問(wèn)題!我的是winie@live。cn

    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 免费看美女让人桶尿口| 亚洲精品在线视频| 国产精品亚洲一区二区在线观看| 国产成人免费手机在线观看视频| a毛片免费播放全部完整| 亚洲国产精品xo在线观看| 亚洲第一福利网站在线观看| 日本免费一区二区三区四区五六区 | 免费国产污网站在线观看15| 亚洲一级特黄特黄的大片 | 亚洲欧美日韩久久精品| 亚洲午夜久久久影院| 精品久久久久成人码免费动漫| h视频免费高清在线观看| 亚洲视频一区在线| 亚洲精品国产V片在线观看| 免费视频爱爱太爽了| 一个人看的免费观看日本视频www 一个人看的免费视频www在线高清动漫 | 精品亚洲成A人无码成A在线观看| 亚洲第一区精品观看| 波多野结衣免费在线观看| 成人免费一区二区三区| 亚洲欧美日韩中文字幕一区二区三区| 亚洲AV日韩精品久久久久久久| 免费一看一级毛片人| 四虎永久在线精品免费网址| 免费视频一区二区| 九九九国产精品成人免费视频| 亚洲狠狠成人综合网| 久久亚洲AV成人无码国产| 亚洲人成色7777在线观看不卡| 2021免费日韩视频网| 久久久久久久99精品免费观看| 羞羞视频在线观看免费| 亚洲熟妇无码av另类vr影视| 亚洲宅男永久在线| 亚洲色自偷自拍另类小说| 免费人成在线观看网站视频 | 国产成人亚洲精品91专区高清| 亚洲午夜在线播放| 亚洲伊人久久精品|