【问题标题】:How can I control the commit size while writing to text file using kettle?使用kettle写入文本文件时如何控制提交大小?
【发布时间】:2019-02-09 02:30:41
【问题描述】:

我有一个 oracle 表“order”,它有一个 clob 列“description”,主键是 varchar2“Id”。我正在阅读该列,并且对于表中的每条记录,我正在写入一个 txt 文件 - order_Id.txt。表有大约 400000000 条记录,使用文本文件输出写入文件会导致内存不足堆错误并超出 gc 开销限制。如何分块处理数据?

  1. 调整了spoon.bat 中的-Xmx 设置
  2. m/c 有 16gb 内存

*其他详细信息 * 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.我附上了我正在做的确切步骤的截图

【问题讨论】:

    标签: kettle


    【解决方案1】:

    那个肉块有多大? 数据已经分块处理,但是如果您的数据行非常大,那么您可能会耗尽内存。

    默认情况下,步骤之间的每个跃点(缓冲区)占用 10k 行。当缓冲区填满前一步时,等待并停止发送行,直到有容量为止。

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

    【讨论】:

    • 非常感谢您的回复。我也尝试减少行数。我现在为我的问题附上了更多细节
    猜你喜欢
    • 2017-01-27
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    相关资源
    最近更新 更多