ETL kettle 数据调取防止意外停止处理

本文介绍了一种在使用Pentaho Kettle进行ETL操作时避免数据丢失的方法。通过增加延迟步骤确保数据准确到达目标表后才更新源表标识符,以此保证数据的完整性和准确性。

 

pentaho kettle是目前使用比较广泛的一种etl工具

但是在使用的时候如做定时任务 会存在如果任务异常停止会发生数据不准或者丢失数据的情况

这种情况在《Pentho Kettle Solutions》应该也有所涉及 但是并未给出实际的解决方案

以下文章是本人自己的解决思路:

首先使用标识符字段来判断数据是否已被抽取:

图中表最后一个字段flag为标识符,每次抽取数据完成后 更新此flag以表示数据已经被调取

转换示意图:

这是很常用的一种数据抽取方法,每次抽取数据都判断table A 的flag字段是否为1 如果不是1 则不抽取此条数据,抽取完成后更新flag 字段为0,这样就保证了表A的每条数据都只抽取一次

我们知道 "插入/更新" 的速度可能会比更新的速度要慢 这样数据还没有到B表 标识符就提前被更新了,当然如果转换成功完成 这并没有什么问题,但是如果此时因为意外情况转换停止了(服务器重启,停电,断网等情况),或因为某些原因需要手动停止转换,那么这时候数据就会出现数据还没有到B表 标识符已经被更新,下次抽取数据就会跳过这些数据行造成数据丢失而且原因很难查。

 

如何解决这个问题呢:请看转换示意图:

我们在表输入后面加了一个延迟行的步骤 延迟时间 要大于 转换中最慢的步骤的速度

这样即可保证每条数据 准且的到达目的地后 才会更新标识符 当然这样做就会牺牲转换的性能

之后有更好的方法我会及时更新

转载于:https://www.cnblogs.com/wjsharp/p/6474930.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值