Talend:将两个条件子工作的数据合并为一个文件

时间:2017-04-08 05:19:00

标签: java talend ab-initio

我试图在talend复制一份abinitio工作。

我在作业中有两个起点(条件),我正在使用 tjava IF触发器来执行任何一个子作业。

现在,由于任何一个子作业都会执行,我愿意只放一个 tFileInputDelimited 并将Subjob数据流收敛到一个。

我尝试使用tUnite,但通过这样做,两个工作结合起来。而单个子工作不能有两个触发起点。在这种情况下,我收到了错误。

一种方法是使用中间文件,然后再次从中读取。但这不会复制abinitio的工作。如此难以说服。

输入数据可能非常大,所以我不确定加入tmap是否是一个好方法。

有人可以建议一些更好的方法,请建议。

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:2)

如果您只需要写入同一个文件而不需要处理具有相同组件的行

  1. 在调用子作业之前设置OutputStream。前期工作可以很方便。
  2. 让每个子作业上的tFileOutputDelimeted写入该OutputStream而不是文件。
  3. 处理完输入数据后,关闭OutputStream。后期工作可以很方便。
  4. 如果您需要使用相同的逻辑处理行,您可以从您已经拥有的每个不同的子作业中调用一个公共子作业。

    use a common sub-job to merge data flows

答案 1 :(得分:0)

您可以使用tHash组件而不是中间文件,前提是您可以处理内存中的所有内容。