kettle工具之阻塞数据直到步骤都完成

本文详细解析了Kettle中作业与转换的执行顺序,包括转换内的并行执行特性,以及如何通过特定步骤实现顺序执行。同时,介绍了事务处理方式,如设置单一事务和禁用批量提交,以确保数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

kettle中转换和作业的执行顺序:

    1、一个作业内的转换,是顺序执行的。

    2、一个转换内的步骤是并行执行的。

    3、作业内不支持事务,转换内支持事务。

根据业务需要,通常需要在转换内顺序执行,小技巧如下:

    1、执行SQL是优先于所有步骤。

    2、使用“阻塞数据直到步骤都完成”,确保其他数据步骤都完成再进行下一步骤。

事务:

    1、设置转换只使用一个事务。转换设置-->夹项-->使用唯一连接。

    2、设置转换内的表插入等数据库的操作不进行批量提交。"提交记录数量"-->0

 

I 当前步骤生成的记录数(从表输出、文件读入)
O 当前步骤输出的记录数(输出的文件和表)
R 当前步骤从前一步骤读取的记录数
W 当前步骤向后面步骤抛出的记录数
U 当前步骤更新过的记录数
E 当前步骤处理的记录数

 

<think>我们正在处理一个关于Kettle(PentahoDataIntegration)的问题,用户想知道如何阻塞数据直到所有步骤执行完毕。根据引用内容,特别是引用[2]和[3],我们可以找到解决方案。在Kettle中,转换的各个步骤默认是并行执行的。但有时我们需要确保某些步骤完全执行完毕后再继续后续步骤。为此,Kettle提供了“阻塞数据直到步骤完成”(Blockuntilstepsfinish)组件。这个组件的作用是:它会阻塞来自上游步骤数据直到它所监视的所有步骤(被阻塞步骤)都完成处理。一旦这些被监视的步骤完成了,它才会将上游的数据传递到下游。根据引用[2]:>【阻塞数据直到完成】:这个组件会将所设置的被阻塞步骤的所有数据堵住,当被阻塞步骤完成后,才会将被阻塞步骤的所有数据往下一个步骤推。此外,引用[3]提到:>在存在数据输入的情况,为了能让数据输出,需要和“阻塞数据直到步骤完成”配合使用。当所有数据都已经从上个步骤“字段选择”读取完毕后,通过“阻塞数据直到步骤完成”使能打开数据通道,进入到“MicrosoftExcel输出”输出数据到表格。因此,我们可以这样实现:1.在转换中,将需要等待的步骤(即我们希望它们先完成步骤)连接到“阻塞数据直到步骤完成”组件的输入。2.在“阻塞数据直到步骤完成”组件中配置需要阻塞步骤(即需要等待的步骤)。3.然后,将“阻塞数据直到步骤完成”组件的输出连接到后续步骤。这样,只有当所有被阻塞步骤完成后,数据才会通过“阻塞数据直到步骤完成”组件传递到后续步骤。需要注意的是,这个组件通常用于控制数据流,确保在继续之前某些处理已经完成。例如,在数据全部处理完后再进行输出操作。下面是一个简单的步骤示例:-步骤1:读取数据(例如:表输入)-步骤2:处理数据(例如:字段选择、计算等)-步骤3:阻塞数据直到步骤完成(设置阻塞步骤步骤2)-步骤4:输出数据(例如:Excel输出)在这个流程中,步骤3会等待步骤2完成,然后才将数据传递给步骤4。另外,引用[4]提到了另一个组件“阻塞数据”(Blockingstep),但它的行为不同:它只允许最后一条数据通过。而“阻塞数据直到步骤完成”是等待其他步骤完成,然后让所有数据通过。因此,针对用户的问题,我们推荐使用“阻塞数据直到步骤完成”组件。现在,根据要求生成相关问题:</think>### Kettle阻塞数据直到所有步骤完成的方法 在Kettle中实现数据阻塞直到所有步骤完成,核心是使用 **"阻塞数据直到步骤完成"** 组件(Block until steps finish)。以下是具体实现方法和注意事项: #### 实现步骤 1. **添加阻塞组件** 在转换设计中拖入`阻塞数据直到步骤完成`组件,将其连接到需要等待的**上游步骤**(如数据输入或处理步骤)。 2. **配置阻塞目标** 双击该组件,在配置窗口的`阻塞步骤`标签页中,添加需要等待完成的**目标步骤名称**(如SQL脚本、计算步骤等)。例如: ```plaintext 被阻塞步骤步骤A, 步骤B, 步骤C ``` 3. **连接后续步骤** 将阻塞组件的输出连接到需要延迟执行的**下游步骤**(如数据输出或邮件发送)。此时数据流会被阻塞直到所有指定步骤完成。 #### 关键特性 - **阻塞机制** 组件会拦截上游所有数据,仅当配置的步骤全部执行完毕后,才释放数据到下游[^2][^3]。 - **并行控制** 解决Kettle转换中步骤默认并行执行的问题,实现步骤间的同步[^2]。 - **空流处理** 若需处理无数据输入的场景,需配合`检测空流`组件,避免流程无限阻塞[^1][^3]。 #### 典型应用场景 1. **数据完整性保障** ```mermaid graph LR 表输入 --> 数据清洗 数据清洗 --> 阻塞组件 阻塞组件 --> Excel输出 数据清洗 --> SQL脚本 阻塞组件 -.等待完成.-> SQL脚本 ``` 确保SQL脚本执行完成后再导出数据[^4]。 2. **依赖任务调度** 在Job中串联多个转换时,通过阻塞组件强制关键步骤(如文件校验)优先完成。 > **注意**:与`阻塞数据`(仅允许最后一条数据通过)不同,`阻塞数据直到步骤完成`会释放**所有数据**,适用于全流程同步[^2][^4]。 #### 配置示例 ```plaintext [转换流程] 表输入 → 字段选择 → 阻塞数据直到步骤完成 → Excel输出 ↓ SQL脚本(被阻塞步骤) ``` 在此流程中,`Excel输出`步骤会等待`SQL脚本`执行完毕才启动[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值