windows環境kettle使用及linux環境要注意的問題
kettle是基於Java開發的jdk是必須安裝的
kettle實現了資料流程拖拽實現的視覺化介面
kettle對linux和windows都支援
kettle主要是兩部分:job和transformation(轉換)
job主要實現執行時間和執行順序的配置,當然也串transformation。transformation是job的重要元件,job中是順序執行可以設定部分並行
transformation:裡面有許多元件,是並行
kettle的安裝比較簡單:安裝jdk(版本要和kettle一致),配置環境變數,啟動spoon.bat (win) ./spoon.sh(linux)
可能遇見的問題:
1:資料庫的配置和共享
配置資料庫(以oracle11.2的資料庫配置為例)
1).找到ooracle的連線配置檔案的位置(oracle的服務端安裝位置下的product\11.2.0\dbhome_1\NETWORK\ADMIN中的 tnsname檔案)找到要配置的資料庫的資訊
LIFERPT_KF_105 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = XXX.XXX.XXX.105)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = liferpt)
)
)
2).建立oracle的資料庫連結
1、注意要將你需要連線的資料庫型別的jar放到安裝包的lib下
我將相關的jar包放在:E:\zxy\down_package\jar下
2.重新啟動kettle,開啟kettle環境,檔案-》新建-》資料庫連線(oracle的)
點選測試,測試成功,儲存就建立好了資料庫連線
如果你要配置mysql的資料庫連結:配置方式如下
3).將資料庫共享
開啟kettle的主物件樹-》DB連線-》資料庫連線,選中共享,這樣在其他的地方就能共享資料庫的連線了
2. 測試job序列,測試轉換的併發,測試job的併發
測試流程: 流程的指令碼見,指令碼中涉及的資料庫,表完全可以換成自己的資料庫中的任意表,
Job中所有的元件都是序列執行的,要想讓某一部分並行操作:需要在並行節點的前一個節點上做如下操作:
右鍵選擇Run next Entries in parallel
(注意:執行日誌告訴我們,要特別注意無論是並行的job或者不是並行的job,就像電路一樣,多條路徑的操作到後期,只要任何一條通路走通,後面的步驟就會被執行一次,所以,如果後面的步驟不是阻塞等待全部元件執行完畢再執行,後續步驟被執行的次數等於元件執行的路徑數量)
測試的例子:
3. 測試阻塞
網上沒有找到job阻塞的好辦法,迂迴的解決方案是巢狀一層
4. 測試迴圈的流程
(查詢表中的欄位值,等於1的時候開始執行流程,不等於1,延遲5秒再查詢表字段的值(迴圈測試))
Job:
注意的點:
Kettle中的 Js指令碼,是檢驗的指令碼,基本等同於Java中的js,但是由於涉及到校驗,要設定返回狀態,或者欄位值的比對,如果不使用校驗,只是使用一個簡單的js執行一個程式,那麼最好在指令碼的最後加true;
kettle的迴圈有兩種,上面的例子是自己控制的迴圈,還有一種就是kettle支援的設定轉換的方式具體看
當然看實際情況選擇實現迴圈的方式
例如:
延遲5秒執行的js:
for(var t = Date.now();Date.now() - t <= 5000;);
true;
轉換中:
5.附加linux使用中要注意的點
1.linux的圖形化介面的使用 使用vnc簡單點相當於搭建了個windows的介面
1). 新建使用者kettle,並設定密碼
2). Su - root 進入root使用者下修改檔案 vi /etc/sysconfig/vncservers
VNCSERVERS="1:root 2:kittle"
VNCSERVERARGS[1]="-geometry 1024x768 -alwaysshared -depth 24"
VNCSERVERARGS[2]="-geometry 1024x768 -alwaysshared -depth 24"
3). 修改新使用者的介面展示
vi ~/.vnc/xstartup 新增:gnome-session &
4). 修改vnc的登入密碼:
vncpasswd
5). 殺死啟動的介面
Vncserver -kill :2
6). 啟動
Vncserver :2 ///vncserver在對應的使用者下可以不加埠
2. Kettle的jdk解壓到、/usr/java 下要給對應的使用者新增Jdk的配置
在~/.bash_profile中配相當於配在當前使用者下。主要是配置在全域性變數/etc/profile檔案中kettle啟動不了
3. SSH的使用
如果你要使用oracle的生成檔案的工具,或者某些工具,在linux直接執行不出現問題但是在kettle的ssh卻報錯少....
你會發現用root使用者執行就不出問題,其他的使用者就出現問題,可能就是環境變數的問題了。
環境變數的設定有4中設定
1). root使用者可以設定在/etc/profile檔案中
2). 其他使用者:~/.bash_profile :每個使用者都可使用該檔案輸入專用於自己使用的shell資訊,當用戶登入時,該檔案僅僅執行一次!預設情況下,他設定一些環境變數,執行使用者的.bashrc檔案.
3). 其他用戶:~/.etc/bashrc: 該檔案包含專用於你的bashshell的bash資訊,當登入時以及每次開啟新的shell時,該該檔案被讀取.
4). 使用指令碼:可以設定在指令碼中
看到上面的介紹就知道使用ssh的呼叫將對應的配置資訊寫在~/.etc/bashrc和指令碼中都是起作用的
例如:你要操作資料庫,要配置資料庫的連線資訊:
export ORACLE_HOME=/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=liferpt
export PATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/bin
例如你要使用oracle的快速生成檔案的的sqluldr2,如果你要找的包涉及到link,你可以一步步的找link看看包在那個檔案目錄中,配置LD_LIBRAPY_PATH就好將他新增到~/.bashrc中