1

我正在尝试在 talend 中复制一份 abinitio 工作。

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

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

我尝试使用 tUnite,但通过这样做,两个工作正在合并。并且单个子作业不能有两个触发起点。在这种情况下我会出错。

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

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

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

在此处输入图像描述

在此处输入图像描述

4

2 回答 2

2

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

  1. 在调用子作业之前设置一个 OutputStream。一份工作前的工作可能会很方便。
  2. 让每个子作业上的 tFileOutputDelimeted 写入该 OutputStream 而不是文件。
  3. 处理完输入数据后,关闭 OutputStream。后期工作可能会很方便。

如果您需要用相同的逻辑处理行,您可以从您已经拥有的每个不同的子作业中调用一个公共子作业。

使用通用子作业合并数据流

于 2017-04-09T11:04:43.600 回答
0

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

于 2017-04-19T21:09:12.043 回答