我正在玩长时间运行的聚合(可能是一天的窗口)。我意识到这个网站上的其他解决方案说你应该使用批量处理。
我特别感兴趣的是理解这个功能。听起来它会使用常量空间在窗口上进行聚合,一次一个间隔。如果这是真的,那听起来像是一天的聚合是可行的 - 特别是因为它在失败的情况下使用了检查指向。
有人知道是不是这样吗?
此功能记录为:https://spark.apache.org/docs/2.1.0/streaming-programming-guide.html
上述reduceByKeyAndWindow()的更高效版本,其中使用前一窗口的reduce值逐步计算每个窗口的reduce值。这是通过减少进入滑动窗口的新数据和“反向减少”离开窗口的旧数据来完成的。一个例子是当窗口滑动时“添加”和“减去”键的计数。但是,它仅适用于“可逆减少函数”,即那些具有相应“反向减少”函数的减函数(作为参数invFunc)。与reduceByKeyAndWindow类似,reduce任务的数量可通过可选参数进行配置。请注意,必须启用检查点才能使用此操作。
答案 0 :(得分:0)
在MapR论坛上对此进行研究后,似乎肯定会使用恒定的内存级别,假设您可以在分配的资源中安装一天的数据,那么就可以建立日常窗口。
两个缺点是: