首页 > 编程知识 正文

sparkstreaming时间窗口,spark streaming窗口函数

时间:2023-05-03 12:38:19 阅读:247576 作者:1981

滑动事件时间窗口上的聚合对于结构化流而言非常简单,并且与分组聚合非常相似。在分组聚合中,用户指定的分组列中为每个唯一值维护聚合值(例如,计数)。在基于窗口的聚合的情况下,行事件时间所属的每个窗口都会维护聚合值。

流现在包含行以及生成行的时间。而不是运行字数统计,我们希望在10分钟的窗口内对字数进行计数,每5分钟更新一次。也就是说,在10分钟窗口12:00-12:10、12:05-12:15、12:10-12:20等之间接收的单词中的单词计数。请注意,12:00-12:10表示数据12:00之后但12:10之前到达。现在,考虑在12:07收到的单词。此字应增加对应于两个窗口12:00-12:10和12:05-12:15的计数。因此,计数将通过分组键(即单词)和窗口(可以从事件时间计算)来索引。

结果表如下所示:

窗口化类似于分组,因此在代码中,可以使用groupBy()和window()操作来表示窗口化聚合。代码如下:

import spark.implicits._val words = ... // streaming DataFrame of schema { timestamp: Timestamp, word: String }// Group the data by window and word and compute the count of each groupval windowedCounts = words.groupBy( window($"timestamp", "10 minutes", "5 minutes"), $"word").count()

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。