【发布时间】:2017-04-27 10:17:27
【问题描述】:
我对 Pentaho 比较陌生。我正在处理一个并行运行 35 个转换的作业,每个转换都从 MySQL 数据库读取大约 100 万个数据并存储到另一个数据库(MSSQL)中。
但它在几分钟内失败并显示:java.lang.OutOfMemoryError: GC overhead limit exceeded。
我想知道如何简化此过程,以及是否有任何方法可以批量读取数据,或者我可以在转换中使用循环以便以块的形式读取数据(比如 5000)在每个转换中。
此外,当并行运行如此多的转换时,从表中读取大数据的最佳方法是什么。以及“行集中行数”值如何影响海量数据的性能。
我在论坛上尝试了一些东西,但没有得到任何明显的改进。
http://forums.pentaho.com/showthread.php?160467-how-to-improve-performance-of-Table-input-Table-output-step
http://forums.pentaho.com/showthread.php?85626-Kettle-4-2-0-Stable-Table-Input-does-full-table-read
http://forums.pentaho.com/showthread.php?59364-Optimum-Nr-of-Rows-in-Rowset
如果我可以分享更多细节以获得更好的解释,请告诉我。
提前致谢!
【问题讨论】:
-
您是否尝试过单独运行每个转换?可能只有一个具有巨大的数据字段或某个步骤会消耗所有内存。如果所有这些都完成且没有错误单独运行,您可以开始添加更多一起并查看它何时开始失败。
标签: mysql pentaho transformation kettle pentaho-spoon