需求
image.png以上是一个简单的3层数仓运行调度,我们希望ods表有任何一张表etl错误,不再进行后续的edw和rst层的作业。
ods层的原始实现:
image.png
错误发邮件,正确到成功。
实际运行时,不论转换有无错误,都会继续edw和rst层作业。
原理
经查,kettle的调度机制是回溯算法,类似“迷宫算法”。
随机选择一条路径,执行到底,然后返回到上一个分岔点,同理继续。
最终整个job的成功与否取决于最后一步作业项。
这样,最后执行的转换可能是1...n中的任一个,并不能保证有转换错误整个作业是失败状态。
实现
根据回溯原理,要实现只要有任何一步错误都导致整个job的失败,只需将任何错误都引向一个错误节点,如图所示:
悲催的是kettle只有【成功】节点,没有【失败】节点,需要人造一个失败节点。
经多种测试,最后发现最简单的实现就是使用js验证,直接返回false,完整如下:
image.png
网友评论