提高Pentaho过滤行的速度

问题描述 投票:0回答:4

我试图通过一个简单的验证过滤出超过94000条记录的excel表中的记录,并使用Pentaho将它们放入新的Excel表格中。但是,在传递20000条记录后,读取输入文件和过滤记录的速度逐渐降低到小于50 r / s。

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

enter image description here

excel pentaho pentaho-spoon
4个回答
0
投票

我认为解决这个问题的最佳方法是将当前转换分为2个转换和1个作业。第一个转换将输入Excel行和过滤器,然后使用文本文件输出步骤作为“临时”结果。在下一个转换中,读取先前创建的CSV文件,并使用Excel Writer将其导出到Excel。使用纯文本CSV的行比读取excel更快。 Excel中的数字极为有限。玩得开心。


2
投票

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

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


0
投票

我嗅到瓶颈是在Excel Input步骤而不是Filter step

事实上,Excel Input非常非常缓慢。每次有可能我使用CSV Input的原因。

Filter步骤很快,速度高于几千常见。在您的情况下,此步骤花费时间等待从Excel Input步骤获取行,而不是工作。这就解释了速度是49行/秒,距离Input Excel的60行/秒不远。

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

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

但最好的方法是避免使用Excel 2007 XLSX Spreadsheet类型。


0
投票

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

已知写入excel的速度很慢。您可能希望尝试Excel编写器步骤,但不要指望奇迹。

步骤的速度由“通过的行数除以总时间”给出。如果下游步骤缓慢,则会随着时间减少。你可以通过禁用输出步骤来看到它,你会发现前两个步骤要快得多。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.