Kettle學習筆記(二):作業(yè)和定時
一、任務
下面來說一下Kettle里的另一類設計模式,作業(yè)(Job)。作業(yè)里的主對象樹和核心對象基本如下。

核心對象看起來很多,但是比較基礎(chǔ)的主要就是通用中的Start、轉(zhuǎn)換、成功等,還可以通過郵件進行郵件發(fā)送,將作業(yè)中的日志發(fā)送至郵箱方便進行監(jiān)控。這里可以看出的是,作業(yè)是可以相互嵌套的。

我的典型用法就是start+轉(zhuǎn)換+成功。這里的轉(zhuǎn)換,就是數(shù)據(jù)流的核心,轉(zhuǎn)換可以添加多個,用以進行多個表的數(shù)據(jù)同步。

在作業(yè)中,對轉(zhuǎn)換組件右鍵,會顯示編輯作業(yè)入口,這里編輯作業(yè)入口可以關(guān)聯(lián)之前已經(jīng)制作好的轉(zhuǎn)換,這里的Open Referenced Object,可以直接跳轉(zhuǎn)到已經(jīng)關(guān)聯(lián)好的轉(zhuǎn)換里。


二、定時
上面說完了作業(yè)的基本設置,作業(yè)相對轉(zhuǎn)換是較為簡單的,因為核心業(yè)務都在轉(zhuǎn)換里。下面來說說關(guān)于定時,因為業(yè)務數(shù)據(jù)需要定時進行同步。
作業(yè)的Start本身提供了定時功能,但是卻不夠?qū)嵱?。原因在于要保持Kettle始終處于啟動狀態(tài),這樣Kettle一直保持啟動一方面浪費會服務器資源,另一方面Kettle一旦程序崩潰,那么定時更新就會被破壞,不論從哪方面講,都不夠穩(wěn)定。

那么我們怎么辦呢?解決方案是使用shell腳本,利用Linux定時任務來解決這個問題。
這里要說以一下,Kettle提供了四大核心組件:
1)Spoon是Kettle圖形化界面開發(fā)的啟動腳本,在Linux運行spoon.sh啟動,在windows上則運行Spoon.bat進行啟動。下面三個命令皆是如此(.sh和.bat的區(qū)別)?!禟ettle服務器部署相關(guān)問題》說過了,如果在Linux上運行,一定要安裝圖形界面。
2)Pan是Kettle下用來執(zhí)行轉(zhuǎn)換的腳本。
3)Kitchen是Kettle下用來執(zhí)行作業(yè)的腳本。
4)Carte是一個輕量級容器,用于建立ETL Server。
Kettle這里為我們提供了不需要啟動圖形界面直接執(zhí)行轉(zhuǎn)換和作業(yè)的Pan和Kitchen。我們轉(zhuǎn)換保存的文件為xxx.ktr,作業(yè)的保存文件為xxx.kjb。這里有一個點,其實可以不生成ktr和kjb文件,將數(shù)據(jù)直接保存進數(shù)據(jù)庫,這里暫時不做贅述了。
我們需要創(chuàng)建一個xxx.sh的腳本文件,里面寫什么呢?
這段腳本的意思是,啟動在/root/Kettle/路徑下的kitchen.sh腳本文件,這個kitchen實際執(zhí)行的文件為在/root/Kettle/project/路徑下名為1.kjb的作業(yè)文件,然后把日志信息輸出到/root/Kettle/project/路徑下的1.log中(日志信息的輸出是十分必要的,便于監(jiān)控)。到此,我們完成了執(zhí)行腳本xxx.sh的制作。
接下來就是設置Linux的定時任務。
crontab -e可以進行任務設置,進入編輯模式,編輯完成后保存退出,跟vim的操作一致。這里要詳細說的是定時任務這一行,* * * * *分為對應分 時 日 月 周,統(tǒng)一按這5個維度進行定時,一行一個定時任務,后面/root/Kettle/xxx.sh是要執(zhí)行的腳本文件的位置。我這里的0 */1 * * *的意思就是每小時執(zhí)行一次,執(zhí)行時間為每小時0分鐘。如果第一位默認*就是保存這個任務的時間,每小時執(zhí)行一次。這塊感興趣的朋友可以詳細研究。
到這里,Kettle的作業(yè)和定時相關(guān)的內(nèi)容就說完了。越使用越發(fā)現(xiàn)Kettle功能的強大。