Talend - 不使用子作业的错误处理
Posted
技术标签:
【中文标题】Talend - 不使用子作业的错误处理【英文标题】:Talend - Error handling without using subjobs 【发布时间】:2018-10-27 17:22:38 【问题描述】:请看图片。
所以这是一个流程,其中第一个组件执行数据库查询以查找 QAR_ID(单行),如果找到则一切正常。我正在尝试将错误处理放入其中。当没有找到任何行时,它会定向到 tJava_11,这会引发 java 异常并被另一个 tJava 组件记录。
我面临的问题是,当它进入错误处理流程时,它会记录错误并进入作业后部分。但是,我希望 Talend 采用 OnSubJobOk 路线,以便它继续执行其他步骤,而不是直接跳到作业后部分。
我知道使用子作业可以做到这一点,但我不想继续创建“n”个子作业。
有什么方法可以在同一份工作中完成吗?
【问题讨论】:
是否必须引发异常?如果您在退出 tJava_11 时尝试使用 OnSubjobOk 会怎样? @BalazsGunics 对不起,没听懂你说的。目前,我在 tJava_11 中手动引发异常。但是,同一个组件也可能自己引发某种运行时异常。无论哪种方式,我们如何处理错误/异常,并且仍然可以在不使用子作业的情况下继续主流程? 【参考方案1】:您可以删除 runif 并将 get_QAR_ID 中的两种情况处理到上下文组件中。即在变量后查询数据库组件的 NB_LINE,如果它
【讨论】:
【参考方案2】:你可以这样做:
在tJava_1
中,如果您的查询没有返回任何行,则执行错误记录,然后继续下一个子作业。无需在此处抛出异常,只需在之后立即捕获它。
如果找到任何行,则使用 If 触发器继续下一个子作业 (tJava_2
)。
【讨论】:
虽然,这里我是手动引发异常,但很有可能 talend 也可以在运行时引发异常。我明白你关于抑制异常本身的观点,但是如果它被引发并且仍然可以继续 OnSubJobOk 流程,我们可以处理它吗? (不使用子作业)以上是关于Talend - 不使用子作业的错误处理的主要内容,如果未能解决你的问题,请参考以下文章
解决 SLURM “sbatch:错误:批处理作业提交失败:请求的节点配置不可用”错误
无法通过metaservlet api将talend作业zip文件从Windows机器上传到tac