flinksql的双流join,窗口topn中遇到的问题。

双流join的问题:

代码如上所示,中间的测试结果就不展示了,直接上结论:

flinksql进行双流join时,如果不指定时间范围,如下图所示

则会出现:当A流数据过来时,会和B流所有历史数据以及当前数据进行join。

如果指定时间范围,则只会和时间范围内的数据进行join。

窗口topn的问题:

如下图所示:

针对于流数据进行求topn或者去重,如果不指定窗口,用传统的批处理方式则无法实现topn或者去重的目的,会发现每条流数据都是top1。只有通过窗口的方式将数据进行收集才能针对于窗口内的数据进行去重或者求topn。

结论3:

使用窗口的时候,输入第1批数据并不会触发窗口计算,只有输入第2批数据才能触发第1批数据的窗口计算,也就是窗口计算需要数据驱动,前1批数据的窗口收集之后,需要通过后1批数据进行驱动计算。

结论4:

flink视图会破坏事件时间的语义,不要基于kakfa或者mysql的数据做视图或者临时表,然后针对于flink视图或者临时表做事件时间的窗口,这样会破坏事件时间的语义,导致报错。正确的做法是直接对kakfa或者mysql的数据通过窗口进行计算。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值