0

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

顺序文件包含 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. 我假设该作业实际上并未在多个节点上运行,因为只有 1 个文件。这个对吗?如何强制它在所有 6 个节点上运行,以便克服 4 GB 的限制?

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

4

3 回答 3

1

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

于 2014-03-31T17:55:51.213 回答
0

随机是正确的。

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

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

于 2014-07-20T15:25:34.013 回答
0

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

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

否则,您可以使用连接阶段,因为左链接比右链接分配了更多的资源,因此将左链接设置为具有最多数据的文件。

于 2016-09-08T19:58:53.477 回答