结构化流Spark:指定水印时如何在重复数据删除中清除状态?

时间:2020-03-31 12:07:56

标签: pyspark spark-streaming

我们添加了以下代码,以使用水印删除重复项

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

有人能阐明如何清除旧州吗?

0 个答案:

没有答案