kettle从入门到精通 第114课 ETL之webspoon 全局异常/错误捕获

场景:之前在kettle社群里面有看到这样一个job,一个job中有很多作业项,每个作业项执行失败之后都会自动发送邮件通知。当我看到这个设计之后,第一时间的反应是:kettle肯定存在统一异常或者统一错误处理机制。好,今天咱们一起来学习下。

 1、基于webspoon设计子转换t1_error

1)生成记录,生成模拟数据驱动流程,里面只有msg字段。

e00366ce-27db-4102-8a55-56702f0bc62a

 

2)写日志,在写日志步骤里面故意写一个msg1字段,此字段生成记录步骤里面不存在,所以一定会报错。

003fdc16-d13b-4e4f-b00f-85c3655a34ac

 2、设计subjob,调用转换t1_error

1)转换,使用该步骤调用子转换t1_error

b45d5f4b-e8b5-4855-9538-5ab535c65bcc

2)发送邮件,将转换和发送邮件两个步骤连起来,并且设置 连线的类型为红色叉号,红色叉号表示可以将转换步骤发生的错误信息通过邮件发送给用户。

dbbcd992-2adb-474b-9e4f-3bb736179eec

 3)运行subjob,webspoon日志里面显示错误信息,同时也将错误信息发送给用户。

5b56794c-a8fe-4515-835c-f5e4de446854

4)邮箱收到错误信息

 从收到有的邮件信息可以清楚的看到哪个转换发生了异常,该转换步骤errors=1,result=false,表示出现了异常。

0d475b02-c545-4214-a73f-26740665d212

d694b631-09cf-4006-8a1e-a8fd522057c5

 3、设计父job

1)将subjob中的发送邮件去掉

7ac906b3-b992-4c54-88ad-d14f9d3f4170

 2)设计父job

 作业步骤调用subjob

该job中添加发送邮件,用来捕获作业项产生的错误信息。

0ebe2efa-5153-4838-a71c-07b8caac3567

 3)运行父job

从邮件内容来看,父job中的作业可以捕获到subjob发生的错误信息。

c84f7214-d940-44a3-aac1-d76426d59ecc

f8a00aab-0959-4d3c-a30a-305343b36174

写到最后

从上述demo中可以得知,kettle可以使用转换或者作业+发送邮件来进行统一捕获异常或者错误信息。另外如果subjob中已经捕获过异常的话,父job是捕获不到的。

另外疑惑的一个地方是:无论subjob还是父job捕获的异常里面都没有子转换的错误信息,有知道的小伙伴可以评论区留言探讨。

 

image

 

posted @ 2026-01-12 22:00  慕容尘轩  阅读(1)  评论(0)    收藏  举报