標籤:
CPU: Intel i3 3.40GHz
Memory : 8G
Kettle預設配置
將MySQL上的一張29W條資料的表,通過Kettle增量抽取到Vertica資料庫中,結果在排序這一步報記憶體溢出異常。
本來以為是kettle運行出錯了,然後又重新試了一次,結果錯誤重現了。
具體異常如下:
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.OutOfMemoryError: Java heap space)
Caused by: java.lang.OutOfMemoryError: Java heap space
原來kettle預設的運行記憶體才256M和512M,我們要修改它的記憶體配置:
1. 通過修改伺服器作業系統的環境變數,修改jvm的記憶體
可以在windows 更改系統內容變數
加上Java_OPTS=-Xms64m -Xmx512m 修改這兩個數字為你的電腦能承受的記憶體數、
-Xms:初始Heap大小,使用的最小記憶體,cpu效能高時此值應設的大一些
-Xmx:java heap最大值,使用的最大記憶體
2.修改kettle的設定檔,我個人用的這種方式。
在kettle的運行路徑中,用文字編輯器開啟Spoon.bat,找到:
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xmx4096m" "-XX:MaxPermSize=4096m"
最好將其中-Xmx1024m加大最好是256的整數倍
修改MaxPermSize最大值,運行時最大,也可以。
提高kettle執行效率的兩種方式
一、加大jvm的虛擬記憶體;
這個上面已經提到如何修改了
二、提交行數的加大
這個在【表輸出】step中,雙擊它會看到配置視窗,然後找到commit size ,根據你的記憶體調整一個適當的大小就行了
Kettle5.4.0 java.lang.OutOfMemoryError