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

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

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

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

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

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

转换示意图:

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

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

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

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

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

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

最新文章

  1. 浅谈Static关键字
  2. 教你一招:Word中的文字转换成表格,把表格转换成文字
  3. js贪吃蛇源码
  4. AWK命令学习
  5. js模块化AMD/CMD
  6. Linux系统管理命令之权限管理
  7. Longest Increasing Path in a Matrix
  8. Android Fragment(碎片)的使用
  9. POJ1274 The Perfect Stall【二部图最大匹配】
  10. C++一个类对象的大小计算
  11. yield学习笔记
  12. [leetcode]23. Merge k Sorted Lists归并k个有序链表
  13. SpringCloud断路器监控面板——Hystrix Dashboard
  14. vue组件库(二):基于verdaccio工具npm私服搭建
  15. C++中的const关键字学习笔记
  16. McAfee 与 360使用感受
  17. Cuda 9.2 CuDnn7.0 官方文档解读
  18. KnockoutJS Select 标签 Options绑定
  19. Docker数据卷和Docker系统管理(二)
  20. alert的美化,并且随滚动条滚动

热门文章

  1. 关于jquery的$.ajax发接口的同步与异步问题
  2. 理解javascript:void(0);和href="#"
  3. UVa 299 - Train Swapping
  4. Android项目文件结构
  5. 一 APPIUM基本理论知识
  6. Mysql死锁问题解决方式 & 聚簇索引、隔离级别等知识
  7. gec210 NAND BOOT与SD BOOT启动原理
  8. Spark中的wordCount程序实现
  9. robotium从入门到放弃 一 测试开发环境搭建
  10. Mysql中各种常见数据库存储引擎对比