提高 Pentaho 中过滤行的速度

Improving the Speed of Filter Rows in Pentaho

我正在尝试通过简单的验证从 excel sheet 中过滤掉超过 94000 条记录的记录,并使用 Pentaho 将它们放入新的 Excel sheet .但是读取输入文件和过滤记录的速度在通过20000条记录后逐渐下降到不到50条r/s

有没有办法提高处理记录的速度或保持初始速度 1000 r/s?

我发现瓶颈在 Excel Input 步骤而不是 Filter step

事实上,Excel Input 非常非常慢。我每次都使用 CSV Input 的原因。

Filter步骤很快,几千以上的速度很常见。在您的情况下,此步骤花费时间等待从 Excel Input 步骤获取行,而不是工作。这说明速度是49row/s,离Input Excel.

的60rows/s不远了

进程在 x 行后变慢的事实表明内存已满,JVM 将时间花在磁盘交换上。尝试增加 spoon.bat/spoon.sh 上的内存大小。 [设置PENTAHO_DI_JAVA_OPTIONS="-Xms1024m" "-Xmx4096m" "-XX:MaxPermSize=256m"]

您可以尝试的其他方法是调整 PDI 在每个步骤中保留的行数。单击任意位置,属性,杂项,行集中的行数。减少它,直到在 Excel 输入读取的批次大小与内存中保存的记录总数之间找到合适的平衡点。

但最好避免使用 Excel 2007 XLSX Spredsheet 类型。

您的瓶颈在于写入 Excel,从其输入缓冲区中等待的 10k 行可以很容易地看出这一点。

众所周知,写入 excel 很慢。您可能想尝试 Excel writer 步骤,但不要指望奇迹。

一步的速度由“通过的行数除以总时间”得出。如果下游步骤很慢,这将随着时间的推移而减少。你可以通过禁用输出步骤来看到它,你会看到前两个步骤要快得多。

在 Excel 输出步骤的位置放置一个虚拟步骤,然后再次 运行 转换。如果你现在获得更好的吞吐量,你可以理解 excel writer 是罪魁祸首。

请参阅 https://support.pentaho.com/hc/en-us/articles/205715046-Best-Practices-Pentaho-Data-Integration-Performance-Tuning- 以了解有关 Pentaho 等性能调优的更多信息。

我认为解决此问题的最佳方法是将当前转换拆分为 2 个转换和 1 个作业。第一个转换将输入 Excel 行并进行过滤,然后使用文本文件输出步骤作为 "temporary" 结果。在接下来的转换中,读取之前创建的 CSV 文件,并使用 Excel Writer 将其导出到 excel。使用纯文本 CSV 格式的行比读取 excel 更快。 Excel 用勺子写字是极其有限的。玩得开心。