在talend中运行并行作业

时间:2014-01-23 13:45:25

标签: parallel-processing jobs job-scheduling talend

我有一种情况,我需要在talend中并行运行五个不同的子作业。问题是,在我的选择查询中,我将得到五个不同的ID,然后对于每个特定的ID,我需要运行五个不同的作业。 tparrallelize组件的问题在于,它不允许我将上下文变量传递给每个子作业,即在这种特殊情况下的id。

从表限制5中选择id; ---->作为参数

的不同id的同一作业的五个不同实例

任何帮助都将受到高度赞赏

感谢

1 个答案:

答案 0 :(得分:4)

我不确定我是否正确理解你在这里做了什么,但是如果要打破每个ID并将它们存储为5个单独的上下文变量,那么每个作业都可以使用正确的ID访问自己的上下文变量为每个人存储并使用它。

因此,我将从您的数据库输入组件开始(只需选择您想要的ID)并将其提供给tFlowToIterate。通过迭代流将其连接到tFixedFlowInput组件,并在模式中创建2个字段,“key”和“value”。使用内联表格指定“key”应为((Integer)globalMap.get("tFlowToIterate_1_CURRENT_ITERATION")),“value”应为((String)globalMap.get("row1.SupplierPartNumber"))

Iterate through the returned IDs and put in Global Map and then retrieve

然后我将它放入一个tMap组件中,我将"ContextNumber" + row2.key放入映射的键列中,只是为了使它比作为上下文的迭代次数更明显然后输入直接进入tContextLoad

Map the iteration value

从那里你可以OnSubjobOK到你的tParallelize组件并将所有工作链接在一起。在每个作业中,将作业配置为使用适当的上下文变量。

enter image description here