Apache Spark - 处理时间RDD上的滑动窗口

时间:2014-12-17 12:07:21

标签: algorithm scala apache-spark

过去几个月我一直在使用Apache Spark做了很多工作,但现在我收到了一项相当困难的任务,要在配对RDD上的滑动窗口上计算平均/最小/最大等等其中Key组件是日期标记,值组件是矩阵。因此,每个聚合函数也应返回一个矩阵,对于每个单元格,该时间段内所有该单元格的平均值均为平均值。

我希望能够说我想要每7天的平均值,并且有一天的滑动窗口。滑动窗口移动单元总是一个,然后是窗口大小的单位(所以如果它每12周一次,窗口移动单位为1)。

我现在最初的想法是简单地迭代,如果我们想要每X天的平均值,X次,并且每次都按照它的日期对元素进行分组,并带有偏移量。

所以,如果我们有这种情况:

天数:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

矩阵:A B C D E F G H I J K L M N O

我们想要每5天的平均值,我会迭代5次并在此处显示分组:

第一次迭代:

第1组:(1,A)(2,B)(3,C)(4,D)(5,E)

第2组:(6,F)(7,G)(8,H)(9,I)(10,J)

第3组:(11,K)(12,L)(13,M)(14,N)(15,O)

第二次迭代:

第1组:(2,B)(3,C)(4,D)(5,E)(6,F)

第2组:(7,G)(8,H)(9,I)(10,J),(11,K)

第3组:(12,L)(13,M)(14,N)(15,O)

Etcetera,对于每个小组,我必须做一个折叠/缩小程序来获得平均值。

然而,正如您可能想象的那样,这非常缓慢,可能是一种相当糟糕的方式。我无法找到更好的办法。

0 个答案:

没有答案