maxwell增量采集去重SQL

问题描述:maxwell进行bootstrap数据采集的时候,发现同时采集到了insert数据,如何进行数据去重?

分三步完成:
你直接插入历史数据到表里
然后从表里查询出最小的ts
然后插入今天采集当天采集到的ts之后得增量数据

==========第一步=========
insert overwrite table dwd_table_inc partition (dt='2023-02-19')
SELECT
	ts,
	id,
	name
from ods_table_inc
where dt = '2023-02-19' and type = 'bootstrap-insert';

 =====================第三步
 insert overwrite table dwd_table_inc partition (dt='2023-02-19')
 SELECT
	ts,
	id,
	name
 from ods_table_inc
 where dt = '2023-02-19' and type = 'insert'
 and ts >= (
	===========第二步==============
	select min(t2) 
	from dwd_table_inc
)

你可以想象一下拍照记录,当你按下相机后,已经决定了你记录了什么。
问:然后呢?
照片在洗出来的时间里,外面的环境还在变化,你要知道整个变化过程,就得记录这段时间的增量变化,而照片,则记录了之前到你按下快门之前的所有变化的累计,其实就是一个时间点,然后向后累加,但由于查询的性能问题,导致这和时间点完成的事需要一定时间才能完成。

问:那重复的地方在哪?
重复的地方就是你之前在拍照之前记录的东西,那些是多余的,如果你把他累加到拍照之后,就会产生重复

问:你的意思是按快门的时间就是最小的bootstrap_ts?要求insert_ts大于等于min(bootstrap_ts),这就是按完快门的时间
是的

问:我们之前不是说,在进行boostrap时,这个时候,插入了数据,下次同步的时候,插入的数据就会变成历史数据,那这个怎么去理解?
因为你bootstrap了两次,拍了两次照片啊,那之前的不就成了第二次的历史吗?

问:但是我们只做了一次bootstrap,对吗?
是的,我们只需要做一次就行了

问:什么情况下,会出现insert_ts 会小于min(bootstrap_ts)? 我采集到的insert最早的数据是8:30,而bootstrap开始时间是10:00
bootstrap要在maxwell开启之后进行,你的maxwell啥时候开的?

问:我一直把maxwell开了,而且没有清空maxwell数据库
那他就一直在增量采集数据

问:怪不得我老师说,清空maxwell数据库就不会有重复数据
这个是没办法避免的

问:啥意思?
因为你需要先开启maxwell才能进行bootstrap同步

问:清空了数据库,还会有重复数据?
和这个没关系

问:你的意思是maxwell采集增量数据在前,bootstrap在后,是吗?
是的,就是两个线程

问:我卡住的点在于没有理解maxwell的bootstrap,意思就是bootstrap只能同步数据库一开始的状态,后面即使在同步的中途,这个数据库发生了变化,它无法捕捉到变化的数据,是这个意思吗?变化的数据需要maxwell增量采集
是的

顺便查询一下小于这个1ms的有没有存在:bootstrap的最小ts和小于改值1ms的insert数据,bootstrap的最小ts和小于改值1ms的insert数据

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ysksolution

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值