Kettle使用心得彙總系列一 一、kettle實現的功能: kettle可以實現從不同數據源(excel、資料庫、文本文件等)獲取數據,然後將數據進行整合、轉換處理,可以再將數據輸出到指定的位置(excel、資料庫、文本文件)等; 通過kettle處理大量數據非常方便,如果window伺服器或者L ...
Kettle使用心得彙總系列一
一、kettle實現的功能:
kettle可以實現從不同數據源(excel、資料庫、文本文件等)獲取數據,然後將數據進行整合、轉換處理,可以再將數據輸出到指定的位置(excel、資料庫、文本文件)等;
通過kettle處理大量數據非常方便,如果window伺服器或者Linux伺服器硬體一般情況下,對於處理千萬級一下的數據都是可以的;
二、Kettle作業與轉換如何配合使用:
一個作業相當於一個主要任務項,在這個主線中可以調用其它若幹個轉換,每個轉換中可以從作業這個主線中獲取數據,然後將數據進行相應的處理操作,再將數據傳遞給作業主線,也可以在轉換中單獨獲取數據------處理數據------輸出數據;
並且如果對於需要設置變數的情況下,一般也是需要用到作業與轉換的配合使用,因為變數在當前線中設置,不能再當前線中獲取,需要到下一個線中才能夠獲取;
三、Kettle中設置編碼格式:
如果處理的數據中有中文,需要對中文設置編碼格式,一般是utf8格式,徹底的修改格式的方法就是,修改spoon.bat文件中增加如下信息:"-Dfile.encoding=UTF-8";
四、Kettle中調整運行性能:
Kettle預設的性能適用於普通的一般硬體,如果自己的電腦硬體比較好(記憶體比較大),可以對kettle的spoon.bat中的參數進行修改,這樣可以適當的提高kettle的運行性能,主要是修改-Xms、-Xmx、-XX:MaxPermSize三個參數的值:
-Xms:設置JVM初始記憶體 ;
-Xmx:設置JVM最大可用記憶體 ;
-XX:MaxPermSize:設置JVM最大允許分配記憶體,按需分配;
非常註意:
1、 -Xmx必須小於等於系統記憶體的1/4,要不然會報錯,其他兩個選項不大於-Xmx ;
2、當系統記憶體為4G時-Xmx不能大於1G,當系統記憶體為8G或更大時,java版本必須是64位的才能識別出來,此時-Xmx可以為2G或更高
自己配置的信息:window伺服器記憶體8G:
-XX:MaxPermSize = -Xmx = 4096m;
-Xms = 1024m
五、Kettle中常用的控制項:
(1)作業中常用控制項:
1、通用——START:作業開始;
2、通用——作業:指定某個作業迴圈執行;
3、通用——轉換:指定某個轉換,加入到作業中來;
4、通用——設置變數:設置變數,為了轉換或者作業中獲取變數;
5、通用——成功:作業完成操作;
(2)轉換中常用控制項:
1、輸入——Excel輸入:從excel文件中讀取數據;
2、輸入——文本文件輸入:從文本文件中讀取數據;
3、輸入——生成隨機數:用來生成指定類型的隨機數;
4、輸入——自定義數據常量:將值不變的變數存入到此處,方便管理;
5、輸入——獲取系統信息:可以獲取系統信息(日期、命令行參數);
6、輸入——表輸入:從資料庫表中讀取數據;
7、輸出——Excle輸出:註意.xls格式輸出行數有限制,一般輸出.xlsx最好;
8、輸出——插入/更新:根據指定的匹配欄位,可以檢測是插入新數據,還是修改舊數據;
9、輸出——文本文件輸出:將結果數據輸出到文本文件中去;
10、輸出——表輸出:將結果數據輸出到某個資料庫的某個表中;
11、轉換——增加常量:在原數據中將常量值增加新一列;
12、轉換——排序記錄:對原數據按照某個欄位進行排序;
13、流程——空操作:將不需要的數據放到此處,類似垃圾箱;
14、流程——過濾記錄:按照條件進行過濾,類似if-else;
15、流程——Switch/Case:與java中switch/case一樣;
16、腳本——java代碼:執行java代碼;
17、腳本——javascript代碼:執行javascript代碼;
18、腳本——執行SQL腳本:執行sql;
19、連接——記錄集連接:類似於sql的left join/right join/inner join,但是使用前的數據必須要經過排序;
20、作業——從結果獲取記錄:從作業中獲取數據;
21、作業——複製記錄到結果:將轉換中的結果數據放到作業中去;
22、作業——獲取變數:從作業中獲取變數;
23、作業——設置變數:設置變數,從而讓作業中能夠獲取變數;
六、Kettle中javascript腳本執行:
在javascript腳本中可以直接定義變數,可以直接從上一個控制項中獲取值,獲取值的方法直接寫前一個控制項中某列的列明就好,定義的變數在後續的控制項中都可以直接獲取:
七、Kettle中常用的功能代碼:
1、javascript生成uuid的代碼:
var uuid = replace(java.util.UUID.randomUUID(),"_","");
2、Javascript截取前一個控制項中某個欄位的長度,獲取另外一個變數:
var choice = substr(tydm,0,4);
0:開始截取的角標;4:表示截取的長度;
八、Kettle中常見的異常處理:
1、異常類型:java.lang.stackOverFlowError
原因:棧溢出,可能是在處理的數據比較大,棧預設值不夠使用了;
解決方法:修改kettle中的啟動項spoon.bat中的信息,添加一個Xss=1024m即可解決,如果還不夠,可根據硬體來適當增加值;
2、中文輸出亂碼問題:
設置編碼格式,具體操作上述有步驟;