0

我有一个 ETL 要求,例如:

我需要从一个表中获取大约 20000 条记录并分别处理每条记录。(每条记录的处理涉及几个步骤,例如为每条记录创建一个表并将一些数据插入其中)。对于原型,我用两个作业(具有相应的转换)实现了它。我创建了一个简单的空文件,而不是表。但是这个简单的案例似乎也并不顺利。(当我为每条记录创建一个表时,Kettle 在 5000 个记录后退出)

流动

当我运行此程序时,Kettle 变慢,然后在 2000-3000 个文件后挂起,尽管在很长一段时间后处理完成,但 Kettle 似乎有时会停止。我的设计方法对吗?当我用实际需求替换写入文件时,例如为每个 id 创建一个新表(通过 sql 脚本步骤)并将数据插入其中,水壶在 5000 条记录后退出。我需要做什么才能使流程正常工作。增加 Java 内存(Xmx 已经是 2gb)?我可以更改其他配置吗?或者还有其他方法吗?额外的时间不应该是一个限制,但流程应该工作。

我最初的猜测是,由于我们没有存储任何数据,因此原型至少应该可以顺利运行。我正在使用水壶 3.2。

4

1 回答 1

0

我似乎记得这是一个已知问题/限制,因此为什么这些天不推荐使用作业循环。

您是否能够使用转换和/或作业执行器步骤重新构建作业?您可以通过这些站点执行任意数量的行。

这些步骤有它们自己的问题 - 即您必须明确处理错误,但值得一试,看看您是否可以实现您想要的。这是一种稍微不同的心态,但比工作方法更好地构建循环。

于 2016-09-16T15:10:42.100 回答