"Text File Input" 大文件的 Pentaho GC 开销
Pentaho GC overhead in "Text File Input" with large file
我有点卡在这里。我需要读取一个非常大的 CSV 文件(42.000 行,180 列)。 CSV 有一个 header.
每次 “文本文件输入” 步骤尝试加载此文件,一段时间后 Pentaho 完成处理,因为缺少堆 space 并且 GC 工作在 98 CPU.
的百分比
当我阅读以下文件(小得多)时:
我得到每一行的结果:
如何使用 “文本文件输入” 步骤读取大型 CSV 文件而不使用那么多内存 space?每次可以小批量读取吗?
我知道“CSV输入”这一步可以批量读取行,但是结果不一样:
是否可以使用此步骤获得与 “文本文件输入” 相同的结果?
更多数据:
- 我在 JVM 中使用 Xms2048m 和 Xmx6144m 值的 Pentaho 8.1。我不能再进一步了。
- CSV 列和名称是动态的。
谢谢!!!
PD 1:CSV file (partial)
PD 2:Transformation
您需要使用 'CSV file input' 而不是 'Text file Input'。并且还需要配置以下选项
- Set NIO buffer size to like 50000(指定读取缓冲区的大小,从源中一次读取的字节数。)
- 并行检查 运行 选项。而且,将起始副本数更改为 3/5 [右键单击 CSV 文件输入步骤]
我有 运行 你的文件转换(5 万行),配置是 [-Xms2048m" "-Xmx3072m" "-XX:MaxPermSize=256m]。而且我还删除了您的 JS 步骤以用于测试目的。另外我不知道你为什么在这里使用笛卡尔连接?。但发现它工作正常。 HERE.
我有点卡在这里。我需要读取一个非常大的 CSV 文件(42.000 行,180 列)。 CSV 有一个 header.
每次 “文本文件输入” 步骤尝试加载此文件,一段时间后 Pentaho 完成处理,因为缺少堆 space 并且 GC 工作在 98 CPU.
的百分比当我阅读以下文件(小得多)时:
我得到每一行的结果:
如何使用 “文本文件输入” 步骤读取大型 CSV 文件而不使用那么多内存 space?每次可以小批量读取吗?
我知道“CSV输入”这一步可以批量读取行,但是结果不一样:
是否可以使用此步骤获得与 “文本文件输入” 相同的结果?
更多数据:
- 我在 JVM 中使用 Xms2048m 和 Xmx6144m 值的 Pentaho 8.1。我不能再进一步了。
- CSV 列和名称是动态的。
谢谢!!!
PD 1:CSV file (partial) PD 2:Transformation
您需要使用 'CSV file input' 而不是 'Text file Input'。并且还需要配置以下选项
- Set NIO buffer size to like 50000(指定读取缓冲区的大小,从源中一次读取的字节数。)
- 并行检查 运行 选项。而且,将起始副本数更改为 3/5 [右键单击 CSV 文件输入步骤]
我有 运行 你的文件转换(5 万行),配置是 [-Xms2048m" "-Xmx3072m" "-XX:MaxPermSize=256m]。而且我还删除了您的 JS 步骤以用于测试目的。另外我不知道你为什么在这里使用笛卡尔连接?。但发现它工作正常。 HERE.