1. 程式人生 > >kettle系列之二 工具使用

kettle系列之二 工具使用

初始化

設定語言

第一步,可選,把工具設定顯示英文。

工具-選項-觀感

1538924720942

介面簡介

只做簡單解釋,後續做專案會慢慢用到一些其中的外掛

1538986433221

簡單的資料庫交換例子

需求:每天定時從A庫的X表獲取資料,搬到B庫的X表,表結構一致

grid_code欄位要求去掉短橫線

新建作業

快捷鍵CTRL+ALT+N

模型:

1538986264521

步驟:

開始和結束外掛是必須的

獲取當前系統日期,儲存結果到記錄集

取出記錄集,替換佔位符(SQL查詢),獲取資料,搬遷到目標表

新建轉換

獲取日期

快捷鍵CTRL+N

1538986578715

獲取系統當前日期

1538986596622

格式化日期格式

1538986642145

複製資料

1538986703596

從結果獲取記錄

1538986713132

表輸入

1538986886472

格式化字串,去掉grid_code的短橫線

1538987599236

輸出到目標表,注意選目標表

1538987632683

執行

1538990013994

就可以檢視執行結果

1538990083631

可以檢視效能監控圖

一些問題

結果集和變數的區別?

結果集主要用於替換佔位符

變數主要用於替換某些不能使用佔位符的情況,特別注意的是,如果在A轉換裡面設定了變數,是不能在A轉換中使用,必須在下一個轉換或者作業環節才能使用,而且,變數是有作用域範圍的,需要根據實際需要指定好

參考:多表複製的例子

img

表輸出的時候,表名無法使用佔位符實現

每個結果集執行一次Job

應用場景,當需要用到同步多個表資料的時候,可以採用單個作業,多次迴圈的方式,但是需要設定子作業或者轉換為每個輸入結果執行一次。

1538990906628

分批執行,分頁採集資料

在資料庫輸入和輸出的過程中,可以設定每次提交的數量,因為表輸入一般都是直接把整個資料庫表的資料load進記憶體,再處理輸出到目標資料庫,在資料量較大的情況下,需要分批提交

作業示例

1539001865085

設定變數

1539001890185

設定分頁數

1539001931190

1539001994509

1539002011255

獲取分頁總數之後,設定步進序列

1539002046272

1539002074206

1539002087784

子作業,開始複製表資料

1539002124314

設定開始變數

1539002158220

1539002141508

1539002196666

開始複製資料

1539002301730

1539002340914

1539002364613

為什麼分批執行使用變數,而不使用JS迴圈

在第一次搜尋資料的時候,使用的就是JS迴圈,但是在大資料量的時候,kettle每次都記憶體溢位

而且很明顯這是一個固有的問題,PDI不使用JS迴圈

在資料量小的時候,還是可以使用的,但是不建議

主作業:

1539002520444

設定變數

1539002756425

1539002781045

1539002805391

1539002818798

判斷

1539002844711

判斷成立,進入資料複製步驟

1539002874786

1539002913440

1539002940471

計數加1

1539002974532

支援事務嗎?

開源的社群版本只有轉換支援事務,作業不支援事務

配置方法,每隔50000條作為一次事務,如果在15w的時候失敗,那麼前面10w資料是成功提交的。

1539003085015

優化?

十六、使用kettle時必須要注意並且做到的幾個要點

支援遠端執行?

放在叢集的單元說

怎麼記錄執行日誌?

在下一章節,資料庫資源庫裡面解釋