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:错误:批处理作业提交失败:请求的节点配置不可用”错误

使用 errorlevel 查找错误的问题

无法通过metaservlet api将talend作业zip文件从Windows机器上传到tac

提取操作中的 BigQuery 错误:错误处理作业意外。请再试一次

Talend 日期格式错误

Talend tCreateTable 错误:NullPointerException