Spark:适用于Kalman过滤器的Window和UDAF

时间:2018-12-18 08:27:44

标签: sql apache-spark apache-spark-sql window-functions kalman-filter

在Holden Karau和Rachel Warren的High Performance Spark: Best Practices for Scaling and Optimizing Apache Spark中说(第259页):

  

窗口操作使您可以计算最近K批数据中的数据,这对于移动平均值或卡尔曼滤波器之类的操作非常方便

提醒一下,卡尔曼(Kalman)是一种顺序处理,用于根据先前的数据过滤一组数据。 在查看了UDAF的行为后,由于没有排序的概念(合并方法无顺序地合并结果),似乎并没有对其进行调整。

因此,如果UDAF不适合卡尔曼和加窗,如何在窗口内计算卡尔曼滤波器? 有这样的窗口使用示例吗?

1 个答案:

答案 0 :(得分:0)

请注意,引号专门讨论 Window操作,因此您的假设

  

merge方法无顺序地合并结果

不一定成立。如果窗口函数与ORDER BY子句一起应用,即

F(...) OVER (ORDER BY ... [<ROW or RANGE clause>])

F(...) OVER (PARTITION BY ... [<ROW or RANGE clause>])

显式顺序由表达式的上下文定义,并且合并以明确定义的方式调用。

由于副作用,与OVER一起使用的聚合函数是顺序的(在前一种情况下是全局的,在后一种情况下是通过分区的),因此merge永远不会被调用。