这里我们再说,waterMark设定的那个延迟的时间,设置多少合适呢?
对于有序的数据我们直接可以用升序的waterMark对于乱序的不行.
因为waterMark是整个flink中数据流动的时间,所以如果设置的延迟时间太长那么就会,收到结果的速度就很慢,如果,设置的延迟时间太短,那么就有可能得不到正确的结果,之前我们已经分析过了.
那么要设置多少合适呢?
首先应该对业务有所了解,心里大概有数,延迟是多少,还可以怎么做?
可以去测试一下实际的情况对吧,测一下设置多少合适,
还可以用机器学习,利用一个模型,来得到,一个正态分布
可以看到上图如果,你得到上的一个正太分布,50ms的延迟时间这个时候,丢掉的数据最多,到80ms的
时候丢的就挺少了,这个时候你可以设置延迟时间是80ms就可以了,这样大部分的数据就都不会丢,就可以保证大部分结果是正确的,如果,你的业务要求非常,精确,那么你可以在做waterMark的基础上,
再给时间窗口,加一个延迟时间,比如1s,这个时候几乎就没有丢的了,可以保证结果精确,但是</