有没有考虑过将多条数据拼接为一条replace 
SQL写入数据库,这样也不会对数据库造成太大的压力,至于多少条拼接为一条可以去测试再决定,我用过的有500,1000条数据拼接为一条sql写入数据库。

从 Windows 版邮件<https://go.microsoft.com/fwlink/?LinkId=550986>发送

发件人: yidan zhao<mailto:hinobl...@gmail.com>
发送时间: 2022年2月28日 10:20
收件人: user-zh<mailto:user-zh@flink.apache.org>
主题: Re: 实时数据入库怎样过滤中间状态,保证最终一致

对数据的实时性、延迟有多严格。
基于process算子处理,来一个orderId,记录status到状态,不要输出,同时设置定时器触发输出。
新数据进入,先判定状态,timestamp更大就更新状态,并更新定时器。

比如说定时器10s,就是一个订单只有连续10s状态不变才会被输出,否则就等待后续可能的更大ts的订单状态。
前提是你的订单必须带ts这个字段,能表达哪个order更晚。

18703416...@163.com <18703416...@163.com> 于2022年2月28日周一 10:00写道:

> keyBy 算子之后接 timewindow 窗口, 每个窗口如果有多条数据就取最新的一条。 至于对数据库的压力,取决于这个窗口的大小
>
> > 2022年2月25日 下午6:45,Lei Wang <leiwang...@gmail.com> 写道:
> >
> > 场景描述:
> > Kafka 中的数据直接入到 MySQL 数据库中,数据格式如下:
> > order_id   status
> > 只有两个字段, order_id 为主键,以 replace 覆盖方式写入到数据库中。
> >
> > 对同一个 order_id, status 变化很频繁,为不对数据库造成压力,不会对每一条记录都做入库操作,但一定要保证这个 order_id
> > 最终的状态不丢,但这个最终的状态也不确定是多少。
> >
> > 我的做法是 KeyBy  orderId 后判断两条记录的时间间隔,如果时间间隔太小不做入库操作,但如果这个 order_id
> > 最后来的两条记录时间间隔太小,会导致最终的状态丢失。
> >
> > 请问有什么其他的解决方法吗?
> >
> > 谢谢,
> > 王磊
>
>

回复