在使用DStream的Spark流中,我们有
reduceByKeyAndWindow(func, invFunc, windowLength, slideInterval, [numTasks])
您可以在其中提供反函数,该函数将删除窗口中最早的(微批次)聚合结果,从而使您可以在非常大的窗口上大幅减小状态的大小。
在Dataset / Dataframe API中,我们有groupBy(key, window(...)).agg(myAgg.toColumn)
,如here和here
但是有什么方法可以通过在Dataset / Dataframe API中仅对旧块进行逆聚合而对新块进行逆聚合来优化状态计算时间?