Talend作业填充输出表时如何对无效查找抛出错误终止进程
Talend tMap实现首次查找失败即终止作业的配置方案
Talend原生支持该需求,无需开发自定义插件,按以下步骤配置即可:
- 调整tMap的未匹配行输出规则
打开tMap配置面板,定位主数据流和查找表的关联键配置项:- 保留原有匹配成功行输出到目标表的逻辑不变
- 不需要再把所有未匹配行全量输出到「无效行」表,单独给未匹配行新建一个输出流,仅勾选需要带出的字段:至少要包含作为查找关联键的字段,用于后续拼接错误信息
- 配置首次失败触发终止逻辑
- 将tMap输出的未匹配流连接
tSampleRow组件,在组件配置里设置采样行数为1,确保仅捕获第一条触发匹配失败的记录,不会拉取后续所有未匹配数据占用资源 - 将
tSampleRow的输出流连接tDie组件,打开tDie配置面板:- 在错误消息输入框中拼接自定义提示,例如写入
"查找关联失败,不存在对应匹配值:" + 未匹配流.关联键字段名,抛出错误时会自动带出导致失败的具体键值 - 勾选
终止整个JVM进程选项,不要选择仅终止当前子作业,保证作业直接停止不会继续执行后续写入、计算逻辑 - 注意:给tDie配置非0的错误码(例如
999),不要使用默认的0值,否则上游调度系统会误判作业执行成功
- 在错误消息输入框中拼接自定义提示,例如写入
- 将tMap输出的未匹配流连接
- 兼容原有无效行写入逻辑的配置方法
如果需要保留原有未匹配行写入无效表的逻辑做留痕,不需要删除原有配置,只需要在tMap的未匹配输出流后接
tReplicate组件做分流:一条分支走原来的写无效表逻辑,另一条分支走上述的tSampleRow+tDie终止逻辑即可,两条分支互不影响,第一条未匹配记录出现时会立刻触发作业终止。
配置完成后可直接做验证:构造一条查找键不存在的测试数据放在主输入流最前端,运行作业会直接抛出带具体失败值的错误,作业进程立刻退出,不会向目标表写入任何不完整数据。
内容的提问来源于stack exchange,提问作者ps0604
相关产品推荐
相关产品推荐

