我有一个Talend Job,其中组件以某种方式形成了一个闭环。如下图所示:

这两个tMap输出的模式是相同的。现在,在将任何tMap连接到tUnite之后,当我尝试连接第二个tMap时,它没有连接到它。我听说Talend不允许在作业中出现闭环。这是真的吗?如果是,原因是什么?有人有类似的问题here,但没有找到答案。
发布于 2017-12-12 21:02:30
Talend实际上创建了一个Java程序;从本质上讲,这就是您遇到限制的原因。
tUnite依次获取每个输入提供的所有数据,即A的所有数据,B的所有数据,C的所有数据。
由于用于每个流的编程循环的性质,它不能从A获取行1,然后从B获取行1,然后从C获取行1,然后从A获取行2,然后从B获取行2,等等。然而,tMap multiple outputs或tReplicate确实创建了行1到A、行1到B、行1到C、行2到A、行2到B等等。
这就是为什么不能拆分然后重新加入流的原因。
发布于 2017-12-12 23:07:39
PreetyK已经解释了原因。我将解释如何绕过这一限制。
您可以将tMap_10和tMap_11的输出分别存储在一个tHashOutput中。在第二个tHashOutput上,您必须选中"Link with a tHashOutput“复选框,然后从下拉列表中选择另一个tHashOutput。这告诉它写入与第一个tHashOutput相同的缓冲区,有效地使您的tMap_10和tMap_11输出“联合”。在下一个子作业中,使用tHashInput从tHashOuput读取数据(必须使用单个tHashInput,因为两个输出共享相同的数据)。
以下是一些截图:

然后是tHashInput:

请注意,默认情况下,这些组件是隐藏的。你必须转到文件>项目设置>设计器>调色板设置,然后将它们从左到右移动,如下所示。然后,您将在您的调色板中找到它们。

https://stackoverflow.com/questions/47772620
复制相似问题