kettle踩坑大集合

一、提高传输数据同步效率

1.数据库连接增加以下配置

useServerPrepStmts=false
rewriteBatchedStatements=true
useCompression=true
oracle读取慢添加:
在选项中添加defaultRowPrefetch,值设置为10000以上,具体是数据库情况而定

图片.png

2.使用连接池

注意:使用连接池后, 在第一次创建连接池后不会随着该kettle任务线程结束销毁线程池, 而是与项目的生命周期保持一致, 可以使用jobMeta.clear();方法销毁连接池;
楼主遇到的坑:同步过程中使用的线程池中的连接失效导致线程无法释放, 再次重启还是使用失效的连接, 最终只能重启项目销毁线程池

图片.png

二、0000-00-00 00:00:00值字段同步异常

kettle报错信息: can not be represented as java.sql.Timestamp
解决方案:

zeroDateTimeBehavior=convertToNull

图片.png

三、跑大数据量,内存溢出

1.kettle在同步以job为单位, job不执行完 不释放内存.

建议: 大数据量时分批跑, 例如按照id/时间进行分片执行, 使用连接池并且java在初始化JobMeta时只初始化一次.

你可能感兴趣的:(kettle踩坑大集合)