我有一个Oracle表“ order”,其中有一个clob列“ description”,主键也是varchar2“ Id”。我正在读取该列,并针对表中的每个记录将其写入txt文件-order_Id.txt。表大约有4亿条记录,并且使用文本文件输出写入文件给内存不足堆错误和gc开销限制。如何处理大块数据?
*其他详细信息* 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.我已附上截图,其中包含我正在执行的确切步骤
答案 0 :(得分:0)
那块血块有多大? 数据已经按块进行处理,但是如果您的数据行非常大,则可能会耗尽内存。
默认情况下,步骤之间的每个跃点(缓冲区)占用1万行。缓冲区填满后,上一步将等待并停止发送行,直到有足够的容量为止。
您可以减少转换属性下的跃点中适合的行数(右键单击画布的空白区域)。它是每次转换的服务,缓冲区越小,转换速度就越慢。