我使用functions.window
使用Spark和Java创建滑动窗口计算。示例代码:
Column slidingWindow = functions.window(singleIPPerRow.col("timestamp"), "3 hours", "1 seconds");
Dataset<Row> aggregatedResultsForWindow = singleIPPerRow.groupBy(slidingWindow, singleIPPerRow.col("area")).count();
数据如下所示:
+----------+-------+------+
| timestamp| area|events|
+----------+-------+------+
|1514452990|domain1| 41|
|1514452991|domain1| 42|
|1514452991|domain1| 50|
|1514452993|domain2| 53|
|1514452994|domain2| 54|
|1514452994|domain3| 54|
|1514452993|domain1| 35|
+----------+-------+------+
实际上每个时间戳都有很多的事件,并且还会注意步骤和窗口大小之间的大比率。
我的问题是计算计算的时间是多少?我的意思是结果中step/window
个不同的行使用每个时间戳区域计数。 Spark会保存中间结果吗?让一对夫妇的每一次计算都计算一次,还是计算每对夫妇的结果step/window
?