在Talend中同时运行具有不同上下文参数的相同子作业



我遇到过一个用例,我从tMyslInput中提取行,然后逐个迭代,为检索到的每一行完成一个子作业。

tMysqlInput---->迭代------->(作业具有多个组件,如写入文件、记录文件、进入数据库和类似的不同过程,这本身就是一个完整的过程)。

问题是,由于迭代后的子作业链接本身负责处理所有内容,所以我只想派生与从具有不同上下文参数的tMysqlInput中提取的行数一样多的子作业。

所以我试着跟随

tMysqlInput----->迭代(*n,其中n是提取的行数)----->(作业)

但在这里,线程正在读取彼此的上下文变量,因此最终在类似的文件、相同的数据库条目等中写入类似的上下文

我想根据同步线程获取的行数来对子作业进行并行化。

tMysqlInput查询,比如说,从状态为'pied'的某个表中选择file_id、input_path、output_path;

比方说我得到了4个元组,然后我想同时迭代4个元组。只需执行子作业,然后让子作业自己执行即可。

感谢

试试这个-

1) 单击迭代链接-在组件属性选项卡中,您可以看到基本设置-启用并行执行复选框(选中此复选框后),您可以输入要并行运行的迭代次数值。这可能是tMysqlInput组件返回的行数(但是,在执行tMysqlInput-globalMap.get("tMysqlInput_X_NB_LINE")之后,变量的总行数将具有值

2) 您可以在子作业中传递上下文变量值-为此,您必须首先在子作业定义上下文变量,然后在迭代链接tSubJob后单击组件属性选项卡,您将看到上下文Param(表/网格),单击+符号选择上下文变量并分配其值。

最新更新