目錄
Kettle學習筆記(一)— 環境部署及運行
Kettle學習筆記(二)— 基本操作
kettle學習筆記(三)— 定時任務的腳本執行
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最大允許分配內存,按需分配;
非常注意:
-Xmx必須小於等於系統內存的1/4,要不然會報錯,其他兩個選項不大於-Xmx ;
當系統內存為4G時-Xmx不能大於1G,當系統內存為8G或更大時,java版本必須是64位的才能識別出來,此時-Xmx可以為2G或更高
2.創建數據庫連接的參數中必須加上以下三個參數:(用於增加數據寫入速度)
useServerPrepStmts=false
rewriteBatchedStatements=true
useCompression=true
提高每次表輸出的提交量。
異常匯總
1.連接不上數據庫,報java.lang.NullPointerException異常:
原因:kettle中放置的連接數據庫的驅動jar包版本低於要連接的數據庫版本;
解決方法:首先查看自己要連接的數據庫版本,然后選擇驅動jar包版本要對應或者高於但要最接近於數據庫版本的jar包即可解決;
2.正常運行一會突然報錯:Communications link failure
錯誤一:
java.net.SocketException: Connection reset by peer: socket write error
錯誤二:
com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Communications link failure during commit(). Transaction resolution unknown.
產生上述兩個錯誤的原因:可能是kettle默認使用的是服務端提供的statement,因為一些原因服務端可能會關閉statement,因此要對連接的數據庫設置一些參數,使用kettle自身提供的statement就可以
(1)解決問題:設置參數如下:
useServerPrepStmts=false
rewriteBatchedStatements=true
useCompression=true
(2)如果使用連接池,並將連接池總的maxIDle數值設的比較大: