使用kettle进行增量抽取数据

使⽤kettle 进⾏增量抽取数据
使⽤背景:
当前项⽬中使⽤的数据依赖于其它系统,别⼈的系统当然不会把实时更新的数据⼀个不差的发送给我们(当然更加不会让我们对他们系统的数据库进⾏编程),所以我们要⾃⼰动⼿去获取他们系统中的数据。
使⽤⼯具:
kettle
⾸先需要考虑的问题是不可能是全量进⾏数据的拷贝,数据量如此庞⼤!
那么就得考虑增量,何为增量去百度。。哈哈哈
⾄于如何增量抽取数据,有很多种办法,我这⾥⽰范的是通过时间去增量抽取(因为刚好别⼈的库中每条记录的时间记录的都相当详细,所以我认为这个⽐较好)。
⾸先创建好实例库:
kettle中有⾃动⽣成UUID的功能,所以直接拿过来耍,为了简洁⽅便,字段使⽤⽐较少。
⾸先利⽤kettle⾃动⽣成测试数据:
主要⽣成UUID和当前系统时间到timejob表中(每隔2s执⾏⼀次),我们后续的操作都是对这张表中的数据进⾏⼀个备份。
SQL > desc  timejob;
Name      Type          Nullable  Default  Comments
--------- ------------ -------- ------- --------
UUID      VARCHAR2(36) Y
BEGINTIME  DATE          Y
SQL > desc  timejob_bak;
Name      Type          Nullable  Default  Comments
--------- ------------ -------- ------- --------
UUID      VARCHAR2(36) Y
BEGINTIME  DATE          Y
橡胶软化油夹心取力器下⾯第⼆步就是抽取该表中的数据到⼀个备份表中,timejob_bak。
这⾥由于是我第⼀次操作,⽐较简单,就直接上图了。。
获得上次操作时间和系统时间存到变量中:
这⾥的开始时间是通过表数据选项获得上⼀次操作的最终结束时间,以作为我此次增量抽取的开始时间。第⼆个变量是获得系统的当前时间。
根据时间抽取timejob表中的数据:
获取变量的写法:
此处获取的变量就是上⼀步存⼊的变量,下⾯的抽取增量数据就是⼀个sql,从timejob表中抽取数据,存数据就是⼀个表输出。
抽取数据sql:
在这个表输⼊功能⾥⾯有个注意点:
必须将替换sql语句变量打钩,否则变量⽆法识别。
表输出就没什么可以写的了。
测脑龄最后⼀个操作就是记录本次的操作时间的相关记录。
附上连跑半个多⼩时的数据记录:
烟雾净化
不锈钢钝化看结果可知存在遗漏抽取(后来清空数据⼜跑了⼀次,发现随着时间的增长,两张表中数据量的差距越来越⼤),所以想法⼦查出原因,就要考虑到底是什么问题。
SELECT
UUID
, BEGINTIME
FROM  TIMEJOB
where  begintime > to_date(substr('${endtime}',1,19),'yyyy-mm-dd hh24:mi:ss')
and  begintime <= to_date(substr('${sysdate}',1,19),'yyyy-mm-dd hh24:mi:ss')
由于sql⽐较简单,因此不会出现sql的问题,数据也没有胡乱试的增长(刚开始玩kettle的时候,我把第⼆⼤步骤的三个转换写在⼀个转换⾥⾯,数据总是炸),所以就考虑唯⼀能够存在的问题:时间。。
因为⽣成数据是2s⼀次,⽽数据抽取是6s⼀次,就要考虑是不是在每隔6s的时间点上,数据录⼊了,但是没有被抽取作业给读取到,但是当前时间段已经跳过去了,造成了数据遗漏,进库测试下。
胡乱写个sql测试下:
根据之前的测试数据量测试结果:
域名管理841 - 678 = 163.。。。。
结果跟测试的数据量刚好吻合,说明我们的猜想是正确的,那么就要考虑如何解决这个问题。
如果按照两个作业时间间隔的最⼩公倍数计算,我怎么设置时间都是有可能出现这种情况的,wtf
那么想法⼦改sql,之前的sql是每⼀次任务读取的是上⼀次任务结束到当前时间(包括当前时间),如果我想法⼦把当前时间产⽣的数据留到下⼀次读取是否可⾏?let’s do it。
改sql我就不贴了,清空测试数据直接开跑:
跑了将近20分钟的结果,数据⼀个不漏,很好很强⼤。。。
项⽬试运⾏的时候,客户说kettle会莫名的⾃动关闭,哎!有哪位⼤神懂的路过指导下吧。。。不胜感激,谢谢

本文发布于:2024-09-23 11:12:22,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/189987.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:时间   数据   抽取   变量
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议