我们添加了以下代码,以使用水印删除重复项
stream_df = stream_df \
.withWatermark('postedtimets', "3600 seconds") \
.dropDuplicates(subset=['id','postedtimets'])
从功能上讲,代码可以正确删除重复项,但是运行了几天后,我们发现应用程序运行速度相当慢。
查看spark UI中的SQL选项卡,我们注意到状态没有被清除,尽管最近1小时的记录数为20k,但它正在读取更多的100万个状态记录
streaming重复的总状态行数:1,274,619状态总计使用的内存(最小,中,最大):329.5 MB(764.5 KB,1690.6 KB,2.3 MB)提供程序中的状态缓存命中的缓存计数:55,400输出行数:59仅在当前版本上的状态估计大小总计(最小值,中值,最大值):270.6 MB(574.6 KB,1388.5 KB,1980.5 KB)提供程序中的状态缓存上的高速缓存未命中数:200次提交更改总计( min,med,max):1.6 s(5 ms,7 ms,68 ms)删除行的总时间总计(min,med,max):1 ms(0 ms,0 ms,1 ms)更新状态行的数量:59总共更新行的总时间(最小,中,最大):4.1 s(13 ms,19 ms,88 ms
有人能阐明如何清除旧州吗?