我有一个 ETL 要求,例如:
我需要从一个表中获取大约 20000 条记录并分别处理每条记录。(每条记录的处理涉及几个步骤,例如为每条记录创建一个表并将一些数据插入其中)。对于原型,我用两个作业(具有相应的转换)实现了它。我创建了一个简单的空文件,而不是表。但是这个简单的案例似乎也并不顺利。(当我为每条记录创建一个表时,Kettle 在 5000 个记录后退出)
当我运行此程序时,Kettle 变慢,然后在 2000-3000 个文件后挂起,尽管在很长一段时间后处理完成,但 Kettle 似乎有时会停止。我的设计方法对吗?当我用实际需求替换写入文件时,例如为每个 id 创建一个新表(通过 sql 脚本步骤)并将数据插入其中,水壶在 5000 条记录后退出。我需要做什么才能使流程正常工作。增加 Java 内存(Xmx 已经是 2gb)?我可以更改其他配置吗?或者还有其他方法吗?额外的时间不应该是一个限制,但流程应该工作。
我最初的猜测是,由于我们没有存储任何数据,因此原型至少应该可以顺利运行。我正在使用水壶 3.2。