我们在job和transformation开发中会有等待某一步完成后,再执行下一步的需求,在job作业中实现这一需求参考下面这篇文章:
kettle(Pentaho)job作业并行都执行完后再执行下一步的操作
在转换中,因为转换的所有步骤都是同时启动的,所以用到阻塞这一个组件实现等待的需求。
“阻塞数据直到转换都完成”步骤的使用:
1、转换步骤名称:步骤的名称,在单一转换中,名称必须唯一。
2、监视下面的步骤:在此表格中指定要等待的步骤,可点击“获取步骤”按钮将转换中的全部步骤自动填充到表格中。
3、步骤名称:选择被监视的步骤名称。可多选,当选择的步骤全部执行完成后,阻塞步骤才通过。
4、复制次数:步骤的副本号,当所选步骤具有多副本时(副本可通过右键点击步骤选择“改变开始复制的数量”进行设置,这个功能实际的含义是:设置多少份的拷贝,开多少线程。副本号从0开始),可设置副本号来指定等待某个特定的副本号执行完毕。如需等待所有副本完成,则需对每个副本设置一行,并使用此列对指定等待哪个副本步骤。
转换示例如下:
第一个线程是产生10行数据,并通过delay row对每行数据delay 1秒。
第二个线程是产生1行数据,阻塞等待线程一的dummy结束后,在执行下一个写日志步骤。
执行结果如下:
可以看到第二个线程是等待了10秒后,也就是第一个线程执行完后才执行的写日志操作。