0
votes

I have a Talend Job, where somehow a closed loop is formed by the components. Image is as follows:

enter image description here

The schemas of both the tMap outputs is same. Now after connecting any tMap to tUnite, when I try to connect the second tMap, it does not connect to it. I heard that Talend does not allow, a closed loop in a Job. Is that true? If yes, the Why? Someone had a similar question here, but found no answers.

2

2 Answers

2
votes

Talend actually creates a Java program; essentially that is the reason for the limitation you've encountered.

tUnite take all the data provided by each of the inputs in turn i.e. all of A then all of B then all of C.

It cannot take row 1 from A then row 1 from B then row 1 from C then row 2 from A then row 2 from B etc. because of the nature of programming loops used for each flow. However, tMap multiple outputs or tReplicate do create row 1 to A then row 1 to B then row 1 to C then row 2 to A then row 2 to B etc..

This is why you cannot split and then rejoin flows.

1
votes

PreetyK has explained the why. I'll explain how to work around this limitation.
You can store the output from tMap_10 and tMap_11 in a tHashOutput each. On the 2nd tHashOutput you must check "Link with a tHashOutput" checkbox and then select the other tHashOutput from the droplist. This tells it to write to the same buffer as the 1st tHashOutput effectively making "union" of your tMap_10 and tMap_11 outputs. On the next subjob, you use a tHashInput to read from your tHashOuput (you must use a single tHashInput as the 2 outputs share the same data).

Here are some screenshots :

enter image description here

Then the tHashInput: enter image description here

Note that by default these components are hidden. You have to go to File > Project Settings > Designer > Palette settings, and then move them from left to right pane as bellow. You will then find them in your palette.

enter image description here