1. 程式人生 > >windows環境kettle使用及linux環境要注意的問題

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. Kettlejdk解壓到、/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 該檔案包含專用於你的bashshellbash資訊,當登入時以及每次開啟新的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中

    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH