我有一个ETL要求,如:
我需要从表中获取大约20000条记录并分别处理每条记录。(每条记录的处理涉及几个步骤,例如为每条记录创建一个表并在其中插入一些数据)。对于原型,我使用两个Jobs(具有相应的转换)实现它。而不是表我创建了一个简单的空文件。但这个简单的案例似乎并不顺利。 (当我为每个记录创建一个表时,Kettle在5000次重新编写后退出)
当我运行它时,水壶变慢然后在2000-3000文件后挂起虽然处理完成了很长时间后虽然水壶似乎停止了一段时间。我的设计方法是否合适?当我用实际要求替换写入文件时,例如为每个id创建一个新表(通过sql脚本步骤)并将数据插入其中,水壶在5000条记录后退出。我需要做什么才能使流程正常工作。增加Java内存(Xmx已经是2GB)?我可以改变其他任何配置吗?或者还有其他方法吗?额外的时间不应该是一个约束,但流程应该有效。
我最初的猜测是因为我们没有存储任何数据,原型至少应该顺利运行。我正在使用Kettle 3.2。
答案 0 :(得分:0)
我似乎记得这是一个已知的问题/限制因此,为什么这几天不推荐工作循环。
您是否可以使用转换和/或作业执行程序步骤重新构建作业?您可以通过这些停靠点执行任意数量的行。
这些步骤都有自己的问题 - 即你必须明确处理错误,但值得一试,看看你是否能达到你想要的效果。它的思维方式略有不同,但构建循环的方式比工作方法更好。