Pentaho BIServer Community Edtion 6.1 集成了 Kettle 組件,可以運行Kettle 程序腳本。但由於Kettle沒有直接發布到 BIServer-ce 服務的程序,所以,在本地(Windows環境)通過圖形化界面開發完成的ETL 腳本 (.ktr & .kjb) ,需要上傳到BIServer-ce 管理的資源庫,才能被BIServer-ce 運行和調度。
重點:Kettle 資源庫 與 BIServer-ce 資源庫 建立一致的目錄管理ETL腳本文件。
第一部分 Kettle 腳本開發
1 創建資源庫,並登錄
此處使用MySQL 資源庫方式。
2 新建MySQL庫同步Job
基本邏輯:讀取源數據庫所有表明,保存在結果集中,對結果集的每一行數據即每一個表名,執行同步任務。其中同步任務是指清空目標數據庫指定表,將源表數據輸出到目標表。
整個MySQL庫同步作業包括五個文件。均存儲在資源庫的 /home/spads/ 目錄下,兩個Job :
job_all_table_extract.kjb 、job_single_table_extract.kjb
三個trans:
trans_acquire_tableNames.ktr、trans_Single_TableName_Set.ktr、trans_Single_Table_extract.ktr
3 本地測試程序是否可以運行
執行 job_all_table_extract.kjb ,驗證程序是否成功執行。
可選擇線上測試運行,根據需要選擇。
第二部分 發布Kettle腳本到 BiServer-ce
BIServer-ce 使用資源庫管理程序文件,登錄http://IP:8080/pentaho 后,可以點擊 Browse Files 瀏覽程序文件。
由於 Kettle 資源庫和 BIServer-ce 資源庫表結構無關,所以不能直接通過數據庫發布Kettle 腳本。需要在Kettle 中導出*.ktr 和 *.kjb 文件,通過資源管理頁面,上傳到BIServer-ce 的資源庫。
此處需注意,Kettle 資源庫中5個腳本文件存在目錄引用關系,所以需要在BIServer-ce 資源庫中建立對應的文件目錄,並將到處的腳本文件發布到指定的目錄,腳本文件才可以運行成功。
1 導出kettle 腳本
注意文件名
2 在BIServer資源庫中建立與Kettle 資源庫一致的文件目錄
Kettle 腳本在Kettle資源庫中的存儲路徑為 /home/spads,BIServer-ce 資源庫的默認根目錄為/home 因此在/home目錄下新建目錄 spads
3 上傳kettle 腳本到對應的文件目錄
第三部分 運行、調度Kettle 腳本
在資源瀏覽中選擇JOB,可以選擇右邊的動作 Run in background 執行,並可以通過open 查看執行日志。 也可以選擇Schedule 進行調度處理。
注:Kettle 執行表輸入表輸出時,可能會出現字符集亂碼問題。一般需要檢驗作業或者轉換使用的DB 連接的連接參數,
characterEncoding utf8 指定連接字符集為 utf8 (MySQL使用,其他數據庫使用UTF-8)
還有一些數據問題,比如MySQL輸入表中存在日期為 0000-00-00 00:00:00, 會導致表輸入讀取錯誤,可以通過配置
zeroDateTimeBehavior convertToNull
還有Kettle 默認會把空字符串轉換為NULL,如果輸入表和輸出表對特定字段均限定不許為空,則會導致表輸出錯誤,為解決此問題,需要配置Kettle 的配置文件,此文件通常存放在/用戶名/.kettle/目錄下,此處為/root/.kettle/kettle.properties
在里面增加一行:
KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=Y