PDI - 超过 GC 开销限制

PDI - GC Overhead Limit Exceeded

所以,我对 PDI 和我的转换流程有一些疑问。 根据我的传输流,我收到错误 GC Overhead Limit Exceeded 并且我已经在寻找解决方案,例如增加 spoon.bat -Xms -Xmx2g 的内存,但它不起作用。所以我考虑替代解决方案,我认为也许我应该改变流程(Sorte Merge 使用了大量内存并导致该错误)。 或者,如果你们对我的问题有其他解决方案,我真的很需要。

下面是我的变流图。 谢谢#SorryForMyGrammar

My Transformation Flow

您确定要合并,而不是 Dummy 或 Append 流来追加行吗?

合并行实际上将执行联接。如果你有很多命中,其中一个流中的键与另一个流中的键匹配(或者,更糟糕的是,如果你没有键,这会导致交叉连接),你将在基数方面制造一场噩梦。

更糟糕的是,当有来自任一数据流的输入行超出筛选行时,合并联接将无法完成,从而在内存中保留了一个巨大的数据集。

如果合并实际上是您所需要的,您应该仔细分析结果集的基数,但还要在合并连接之前添加两个排序行步骤,它必须按连接键对每个流进行排序,并且也有好处解耦数据流,允许合并连接 运行 整个流,而不会在您的转换中造成潜在的死锁。

您可以通过在公式步骤中包含该逻辑来跳过整个拆分和合并操作。

使用 IF(condition;A;B),其中 condition 是您在筛选行步骤中定义的测试,A 和 B 是来自各自公式步骤的现有计算.这样每一行都会得到正确的计算,并且永远不需要加入流。