如何使用pentaho将15.000.000个寄存器加载到表中?

如何使用pentaho将15.000.000个寄存器加载到表中?,pentaho,etl,Pentaho,Etl,我用Pentaho创建了一个ETL过程,它从数据库中的表中选择数据并将其加载到另一个数据库中 我要做的主要问题是,对于1500.000行,需要6个小时。整张桌子是15.000.000,我得装5张这样的桌子 有人能解释一下如何用pentaho加载大量数据吗 谢谢。没有涵盖所有可能的性能问题的固定答案。您需要识别瓶颈并在您的环境中解决它们 如果在Spoon中运行作业时查看Metrics选项卡,通常可以看到行/秒速率在哪一步下降。它将是一个完整的输入缓冲区和空输出缓冲区 为了了解作业的最大性能,您可以

我用Pentaho创建了一个ETL过程,它从数据库中的表中选择数据并将其加载到另一个数据库中

我要做的主要问题是,对于1500.000行,需要6个小时。整张桌子是15.000.000,我得装5张这样的桌子

有人能解释一下如何用pentaho加载大量数据吗


谢谢。

没有涵盖所有可能的性能问题的固定答案。您需要识别瓶颈并在您的环境中解决它们

如果在Spoon中运行作业时查看Metrics选项卡,通常可以看到行/秒速率在哪一步下降。它将是一个完整的输入缓冲区和空输出缓冲区

为了了解作业的最大性能,您可以单独测试每个组件

  • 仅将表输入连接到虚拟步骤,并查看它达到多少行/秒
  • 定义“生成行”步骤,其中包含指向目标的所有字段和一些代表性数据,并将其连接到表输出步骤。再次检查行以查看目标数据库的吞吐量
  • 开始将更多步骤/转换连接到表输入,并查看性能下降的地方

一旦知道了瓶颈,就需要找出解决方案。批量加载步骤通常有助于提高输出速率。如果网络延迟阻碍了您,您可能希望首先将数据转储到压缩文件中,然后在本地复制这些文件。如果表输入包含联接或where子句,请确保源数据库具有要使用的正确索引,或更改查询。

没有涵盖所有可能的性能问题的固定答案。您需要识别瓶颈并在您的环境中解决它们

如果在Spoon中运行作业时查看Metrics选项卡,通常可以看到行/秒速率在哪一步下降。它将是一个完整的输入缓冲区和空输出缓冲区

为了了解作业的最大性能,您可以单独测试每个组件

  • 仅将表输入连接到虚拟步骤,并查看它达到多少行/秒
  • 定义“生成行”步骤,其中包含指向目标的所有字段和一些代表性数据,并将其连接到表输出步骤。再次检查行以查看目标数据库的吞吐量
  • 开始将更多步骤/转换连接到表输入,并查看性能下降的地方

一旦知道了瓶颈,就需要找出解决方案。批量加载步骤通常有助于提高输出速率。如果网络延迟阻碍了您,您可能希望首先将数据转储到压缩文件中,然后在本地复制这些文件。如果您的表输入包含联接或where子句,请确保源数据库具有要使用的正确索引,或者更改您的查询。

我从未遇到过Pentaho PDI的卷问题。按顺序检查以下各项

你能检查一下这个问题是否真的来自Pentaho:如果在SQL Developer、Toad或SQL IDE、JDBC编译器中删除查询,会发生什么

原则上,PDI是指使用
SELECT*FROM。。。其中…
并执行转换中的所有其余操作。我这里有一组转换,执行这些转换需要几个小时,因为它们执行复杂的查询。问题不在于PDI,而在于查询的复杂性。解决方案是将GROUPBY和SELECTFROM(SELECT…)导出到PDI步骤中,这些步骤可以在查询结果完成之前开始。结果是4小时到56秒。别开玩笑了

你的内存大小是多少?它在spoon.bat/spoon.sh中定义

在靠近末尾的地方有一行类似于
PENTAHO_DI_JAVA_OPTIONS=“-Xms1024m”“-Xmx4096m”“-XX:MaxPermSize=256m”
。重要参数是
-Xmx…
。如果是
-Xmx256K
,则jvm只有256KB的RAM可供使用

将其更改为可用内存的1/2或3/4,以便为其他进程留出空间

输出步骤是瓶颈吗?通过禁用它进行检查,并在跑步过程中观察您的时钟

如果很长,请增加提交大小并允许批量插入

禁用所有索引和约束,并在加载时恢复它们。您有很好的SQL脚本执行器步骤来实现自动化,但是首先手动检查,然后在作业中检查,否则在开始加载之前可能会触发重置索引


您还必须检查您是否未锁定自己:当PDI同时启动这些步骤时,您可能有正在等待另一个截断解锁的截断。如果您不在一个永无止境的块中,可能需要相当长的时间才能使db能够级联所有内容。

我从未遇到过Pentaho PDI的音量问题。按顺序检查以下各项

你能检查一下这个问题是否真的来自Pentaho:如果在SQL Developer、Toad或SQL IDE、JDBC编译器中删除查询,会发生什么

原则上,PDI是指使用
SELECT*FROM。。。其中…
并执行转换中的所有其余操作。我这里有一组转换,执行这些转换需要几个小时,因为它们执行复杂的查询。问题不在于PDI,而在于查询的复杂性。解决方案是将GROUPBY和SELECTFROM(SELECT…)导出到PDI步骤中,这些步骤可以在查询结果完成之前开始。结果是4小时到56秒。别开玩笑了

你的内存大小是多少?它在spoon.bat/spoon.sh中定义

在靠近末尾的地方有一行类似于
PENTAHO_DI_JAVA_OPTIONS=“-Xms1024m”“-Xmx4096m”“-XX:MaxPermSize=256m”
。重要参数是
-Xmx…
。如果是
-Xmx256K
,则jvm只有256KB的RAM可供使用

将其更改为可用内存的1/2或3/4,以便为其他进程留出空间