Kettle系列: kettle标准化trans模板
=============================
主控trans + sub trans 模式
=============================
针对一个具体的处理任务(比如增量加载一个表), 我认为应该最好是使用两个trans来完成这个任务,分别是主控trans 和sub trans, 其中主控trans负责流程控制(包括依赖检查+增量区间设定+异常报警), sub trans仅负责数据转换, 这样能很好地隔离控制逻辑和数据处理逻辑.
用到的组件有:
在主控trans中, 通过 Transformation executor 组件调用sub trans, 可以在Transformation executor 组件上设置传递的参数, 通常是增量处理的时间区间.
而在数据处理trans中通过Get rows from result 组件对应地也设置参数, 用来获取主控trans传入的参数.
=============================
Transformation executor 的异常捕获
=============================
一般情况下, 如果Transformation executor 执行错误, 在log中能看到错误日志, 但是主控trans却获取不到错误状态. 需要做一些特别设定才能捕获到sub trans的执行异常, 这包括:
1. 在transformation executor 界面的Execution results 页签上, 确保Number of errors设定了输出字段名.
2. 增加一个 Block this step until steps finish 组件来获取sub trans正常结束.
3. 增加一个 filter rows组件来判断 transformation executor 的错误数量输出字段是否大于0.
4. 在filter rows组件后加上 Abort 组件.
这里重点强调, 如何连接 transformation executor 组件和 Block 组件, 以及 transformation executor 组件和 filter组件.
1. 连接 transformation executor 组件和 Block组件
必须使用 this output will contain a copy of the executor steps input data 连线, 在trans的XML文件中, 该连线在对应着 executors_output_step tag.
2. 连接 transformation executor 组件和 filter组件
必须使用 This output will contain the execution results 连线,在trans的XML文件中, 该连线在对应着 execution_result_target_step tag.
<execution_result_target_step>check error filter</execution_result_target_step>
<execution_errors_field>ExecutionNrErrors</execution_errors_field>
<result_rows_target_step/>
<result_files_target_step/>
<executors_output_step>Blocking Step</executors_output_step>
因为 Kettle 7.1 的bug, 上面两个连线必须先连transformation executor 组件到 Block组件, 然后再连transformation executor 组件和 filter组件. 如果次序反了的话, trans的XML文件将会丢失 executors_output_step tag 的取值, 这样即使sub trans异常, 主控trans也捕获不到.
步骤比较繁琐也容易忘记, 贴一个操作步骤示意图.

下面是一个比较完整的组件示意图:
下图的abort组件也要打开abort as error, 这样才能将报错冒泡到最外层.

Kettle系列: kettle标准化trans模板的更多相关文章
- Kettle系列: Kettle并行执行Trans后的合并问题
我们在作业开发中为了处理效率, 经常需要并行执行一些trans, 等它们执行完毕后, 需要执行另外一些trans, 从流程上也就是分支+汇合. 粗看起来很简单, Kettle中对接一下这些组件就搞定了 ...
- kettle系列-kettle管理平台部署说明
本介绍我的开源项目[kettle-manager]kettle管理平台如何获取并部署使用,该项目介绍请参看另一篇博文:http://www.cnblogs.com/majinju/p/5739820. ...
- kettle系列-我的开源kettle调度、管理平台[kettle-manager]介绍
kettle管理工具 专门为kettle这款优秀的ETL工具开发的web端调度.管理工具. 新版本 项目简介 kettle作为非常优秀的开源ETL工具得到了非常广泛的使用,一般的使用的都是使用客户端操 ...
- 开源ETL工具kettle系列之常见问题
开源ETL工具kettle系列之常见问题 摘要:本文主要介绍使用kettle设计一些ETL任务时一些常见问题,这些问题大部分都不在官方FAQ上,你可以在kettle的论坛上找到一些问题的答案 1. J ...
- JS组件系列——基于Bootstrap Ace模板的菜单和Tab页效果分享(你值得拥有)
前言:最近园子里多了许多谈语言.谈环境.谈逼格(格局)的文章,看看笑笑过后,殊不知其实都是然并卵.提升自己的技术才是王道.之前博主分享过多篇bootstrap组件的文章,引起了很多园友的关注和支持,看 ...
- JS组件系列——基于Bootstrap Ace模板的菜单Tab页效果优化
前言:之前发表过一篇 JS组件系列——基于Bootstrap Ace模板的菜单和Tab页效果分享(你值得拥有) ,收到很多园友的反馈,当然也包括很多诟病,因为上篇只是将功能实现了,很多细节都没有处理 ...
- ECMall2.x模板制作入门系列之2(模板标签/语法)
ECMall2.x模板制作入门系列之2(模板标签/语法) 今天给大家带来一个模板语法的教程.希望能为ECMall模板制作者提供一份参考资料.如有问题.建议和意见,欢迎提出. 在ECMall模板中,用& ...
- SpringBoot系列之集成jsp模板引擎
目录 1.模板引擎简介 2.环境准备 4.源码原理简介 SpringBoot系列之集成jsp模板引擎 @ 1.模板引擎简介 引用百度百科的模板引擎解释: 模板引擎(这里特指用于Web开发的模板引擎)是 ...
- kettle系列-4.kettle定制化开发工具类
要说的话这个工具类还是比较简单的,每个方法体都比较小,但用起来还是可以的,把开发中一些常用的步骤封装了下,不用去kettle源码中找相关操作的具体实现了. 算了废话不多了,直接上重点,代码如下: im ...
随机推荐
- 2018蓝桥杯 省赛B题(明码)
标题:明码汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛.16点阵的字库把每个汉字看成是16x16个像素信息.并把这些信息记录在字节中.一个字节可以存储8位信息,用32个字节就可以存 ...
- docker学习5--docker数据卷(volume)
https://blog.csdn.net/dream_broken/article/details/52314993 1.什么是数据卷volume 为了了解什么是Docker Volume,首先我们 ...
- electron入门笔记(三)- 引入bootstrap
源码:https://github.com/sueRimn/electron-bootstrap 当引入jQuery和bootstrap文件时,会报错,原因是:electron 的 Renderer ...
- CSS解决文字超出显示省略号问题
超出一行 white-space: nowrap; overflow: hidden; text-overflow: ellipsis; 超出多行 overflow: hidden; text-ove ...
- 洛谷P4219 大融合
LCT新姿势:维护子树信息. 不能带修,子树修改就要toptree了... 题意:动态加边,求子树大小. 解: 维护子树信息只要额外维护虚边连的儿子的信息即可.这里把siz的定义变成子树大小. 哪里会 ...
- 没有上司的舞会 codevs 1380
上树DP,记忆化搜索. 本题老师讲的方法是直接树形DP,但是由于我对树并不够了解,什么dfs也不想尝试(虽然感觉自己可以搞),于是搞了个结构体存点以及该点的信息,用f[i][j]作为记忆化数组.以后最 ...
- 【CF242E】Xor Segment
题目大意:给定一个长度为 N 的序列,支持两种询问,即:区间异或,区间求和. 题解:加深了对线段树的理解. 对于线段树维护的变量一定是易于 modify 的,对于查询的答案只需用维护的东西进行组合而成 ...
- hdu4899 Hero meet devil
题目链接 题意 给出一个长度字符串\(T\),其中只包含四种字符\((A,C,G,T)\),需要找一个字符串\(S\),使得\(S\)的长度为\(m\),问\(S\)和\(T\)的\(lcs\)为\( ...
- PHP ACCESS-CONTROL-ALLOW-ORIGIN ,设置跨域头
php里允许别的域名跨域访问,先解释下跨域 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制. 所谓同源是指,域名,协议,端口均相同 ...
- 编码标准:ASCII、GBK、Unicode(UTF8、UTF16、UTF32)
英文编码(单字节字符集,码值范围0~127):字节最高位是0 ASCII编码,用于英文字符.中文编码(双字节字符集):首字节(8位)的最高位是1.可依据首字节最高位来判断中英文. GB2312, 旧版 ...