使用水壶写入文本文件时,如何控制提交大小?

时间:2019-02-09 02:30:42

标签: kettle

我有一个Oracle表“ order”,其中有一个clob列“ description”,主键也是varchar2“ Id”。我正在读取该列,并针对表中的每个记录将其写入txt文件-order_Id.txt。表大约有4亿条记录,并且使用文本文件输出写入文件给内存不足堆错误和gc开销限制。如何处理大块数据?

  1. 在spoon.bat中调整了-Xmx设置
  2. m / c具有16gb RAM

*其他详细信息* 1.这些是spoon.bat中的设置。我正在使用水壶PDI 7.0 设置PENTAHO_DI_JAVA_OPTIONS =“-Xms5500m”“ -Xmx15000m”“ -XX:MaxPermSize = 12384m” 2.我将KETTLE_FILE_OUTPUT_MAX_STREAM_COUNT和KETTLE_FILE_OUTPUT_MAX_STREAM_LIFE也设置为1000 3.仍然看到它没有完成\刷新文件。它继续写入空白文件并最终中断 4.我已附上截图,其中包含我正在执行的确切步骤 enter image description here

1 个答案:

答案 0 :(得分:0)

那块血块有多大? 数据已经按块进行处理,但是如果您的数据行非常大,则可能会耗尽内存。

默认情况下,步骤之间的每个跃点(缓冲区)占用1万行。缓冲区填满后,上一步将等待并停止发送行,直到有足够的容量为止。

您可以减少转换属性下的跃点中适合的行数(右键单击画布的空白区域)。它是每次转换的服务,缓冲区越小,转换速度就越慢。