2014-05-12 45 views
1

我想为大量数据提供tHashInput。我想在subjobs中使用Hash在我的主要工作中具有一些模块化。我知道如何使用上下文变量来分享简单的数据,但我想知道如何分享这个对象来使用它作为tHashOutput。或者也许有另一种方式来做到这一点。如何在作业之间共享tHashInput?

有什么想法?

回答

0

正如garpitmzn指出tHash组件对作业是私有的,所以不能在作业中共享。

要在作业之间共享数据,您可以使用tBuffer组件将数据移回父作业,或者将数据写入平面文件或数据库。

如果性能是一个问题,您可以尝试使用内存数据库(如HSQLDB)临时保存数据。

或者,您可以将所有作业合并到一个作业中,假设它不超过作业的最大组件数量。这有很多明显的缺点,并且意味着你的工作复杂性变得非常高,但它可以让你继续使用你的tHash组件。

+0

tBuffer非常慢。我试图用tHash实现的是性能。最后,我使用tHashOutput和tHashInputs在任何地方重复使用一个大工作。关于您使用内存数据库的建议,这听起来很有趣。但我相信这属于另一个问题 –

0

tHash适用于在作业中共享数据。为了跨子作业共享数据,您应该使用tBufferOutput/tBufferInput。

+0

我相信肯定有办法。一个缓冲区不是我正在寻找的,因为散列中包含的数据是巨大的。我只需要对象引用。 –

+0

如果数据量很大,您可以使用平面文件在子作业之间共享数据,或者您的要求是仅使用tHash? – garpitmzn

+0

我需要使用散列,因为我必须使用对数据的最小访问时间进行密集计算,并且必须多次访问数据。所以,我正在寻找极致的表现。 –

相关问题