• Kettle5.4.0 java.lang.OutOfMemoryError


    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 ,根据你的内存调整一个适当的大小就行了

  • 相关阅读:
    hibernate10--命名查询
    mybatis13--2级缓存
    mybatis12--一级缓存
    hibernate09--连接查询
    hibernate08--OpenSessionInView
    mybatis11--多对多关联查询
    mybatis10--自连接多对一查询
    mybatis09--自连接一对多查询
    mybatis08--关联查询多对一
    Oracle job启动与关闭
  • 原文地址:https://www.cnblogs.com/kenwong/p/4599467.html
Copyright © 2020-2023  润新知