gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 12:55:57 26 4
gpt4 key购买 nike

我遇到了一个用例,其中我是从tMyslInput提取行,然后一个个地对其进行迭代以为检索到的每一行完成一个子作业。

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

问题是,由于迭代链接后的子作业本身会处理所有事情,因此我只想派生与从tMysqlInput获取的具有不同上下文参数的行数一样多的子作业。

所以我试图做以下

tMysqlInput ------> iterate(* n,其中n是获取的行数)----->(作业)

但是这里发生了什么,线程正在互相读取上下文变量,因此最终在相似的文件,相同的数据库条目等中写入了相似的上下文。

我想根据与正在同步的线程获取的行数来对子作业进行parallallelize。

tMysqlInput查询可以说,从某些表中选择file_id,input_path,output_path,其中status =“已复制”;

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

谢谢

最佳答案

试试这个 -

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

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

关于multithreading - 在Talend中同时运行具有不同上下文参数的同一子作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21657040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com