在Holden Karau和Rachel Warren的High Performance Spark: Best Practices for Scaling and Optimizing Apache Spark中说(第259页):
窗口操作使您可以计算最近K批数据中的数据,这对于移动平均值或卡尔曼滤波器之类的操作非常方便
提醒一下,卡尔曼(Kalman)是一种顺序处理,用于根据先前的数据过滤一组数据。 在查看了UDAF的行为后,由于没有排序的概念(合并方法无顺序地合并结果),似乎并没有对其进行调整。
因此,如果UDAF不适合卡尔曼和加窗,如何在窗口内计算卡尔曼滤波器? 有这样的窗口使用示例吗?
答案 0 :(得分:0)
请注意,引号专门讨论 Window操作,因此您的假设
merge方法无顺序地合并结果
不一定成立。如果窗口函数与ORDER BY
子句一起应用,即
F(...) OVER (ORDER BY ... [<ROW or RANGE clause>])
或
F(...) OVER (PARTITION BY ... [<ROW or RANGE clause>])
显式顺序由表达式的上下文定义,并且合并以明确定义的方式调用。
由于副作用,与OVER
一起使用的聚合函数是顺序的(在前一种情况下是全局的,在后一种情况下是通过分区的),因此merge
永远不会被调用。