当达到4GB时,并行作业在Lookup阶段失败

时间:2014-03-30 09:57:17

标签: parallel-processing datastage

有一个并行作业,由一个数据集,一个顺序文件和一个连接它们的查找阶段组成。

顺序文件包含15,811行。它导入得很好(我可以在日志中看到这一点)。

问题在于查找阶段 - 它会引发以下错误:

LOOKUP,0: Could not map table file "/var/opt/ascential/adm/DataSet1/lookuptable.20140330.spzjazc (size 4191844864 bytes)": Not enough space
Error finalizing / saving table /tmp/dynLUT18950c3139ce

当我在IBM网站和其他论坛上阅读时,可能的解决方案可能是增加节点数量。所以我将我的APT文件从1个节点更改为6个节点:

{
        node "node1"
        {
                fastname "xxx"
                pools ""
                resource disk "/var/opt/ascential/adm/DataSet1" {pools ""}
                resource scratchdisk "/var/opt/ascential/adm/Scratch1" {pools ""}
        }
        node "node2"
        {
                fastname "xxx"
                pools ""
                resource disk "/var/opt/ascential/adm/DataSet2" {pools ""}
                resource scratchdisk "/var/opt/ascential/adm/Scratch2" {pools ""}
        }
        node "node3"
        {
                fastname "xxx"
                pools ""
                resource disk "/var/opt/ascential/adm/DataSet3" {pools ""}
                resource scratchdisk "/var/opt/ascential/adm/Scratch3" {pools ""}
        }
        node "node4"
        {
                fastname "xxx"
                pools ""
                resource disk "/var/opt/ascential/adm/DataSet4" {pools ""}
                resource scratchdisk "/var/opt/ascential/adm/Scratch4" {pools ""}
        }
        node "node5"
        {
                fastname "xxx"
                pools ""
                resource disk "/var/opt/ascential/adm/DataSet5" {pools ""}
                resource scratchdisk "/var/opt/ascential/adm/Scratch5" {pools ""}
        }
        node "node6"
        {
                fastname "xxx"
                pools ""
                resource disk "/var/opt/ascential/adm/DataSet6" {pools ""}
                resource scratchdisk "/var/opt/ascential/adm/Scratch6" {pools ""}
        }
}

仍然,我得到相同的错误,我注意到作业只写入第一个DataSet文件夹(有一个名为/var/opt/ascential/adm/DataSet1/lookuptable.20140330.spzjazc的文件,其大小一直在增长它达到~4GB然后作业失败并删除文件。

  1. 我假设作业实际上并没有在多个节点上运行,因为只有一个文件。它是否正确?如何强制它在所有6个节点上运行,以便我可以克服4 GB的限制?

  2. 还有其他解决方法吗?

3 个答案:

答案 0 :(得分:1)

查找阶段加载内存中的所有数据。 所以你在这里完全正常。 也许您可以将其更改为合并阶段或加入阶段。

答案 1 :(得分:0)

随机是正确的。

如果您使用Datastage PX为左连接建模并且右侧表的数据量很大或不可预测,那么您需要使用连接阶段而不是查找阶段。

合并阶段是一种专门/优化的连接,大多数人不需要也不应该使用。

答案 2 :(得分:0)

查找阶段应该用于处理少量数据: Join vs Lookup

顺序文件以顺序模式(仅使用一个节点)呈现,您是否可以添加将顺序转换为数据集文件的作业?数据集文件使用并行模式(许多节点)。

否则,您可以使用连接阶段,因为左链接为其分配的资源多于严格链接,因此将左链接设置为包含大多数数据的文件。