我是一个引发流媒体的初学者。因此对检查点有一个基本的疑问。我的用例是按天计算唯一用户的数量。我正在使用按键和窗口缩小。我的窗口持续时间为24小时,滑动持续时间为5分钟。我正在将处理过的记录更新为mongodb。目前我每次都会更换现有记录。但我看到记忆力随着时间的推移逐渐增加,并在1小时半后杀死这个过程(在小实例中)。重新启动后DB写入清除所有旧数据。所以我理解检查点就是解决方案。但我怀疑是
答案 0 :(得分:5)
在流式传输方案中,持有24小时数据通常太多了。要解决此问题,请使用概率方法而不是精确的流量测量方法,然后执行后续的批处理计算以获取确切的数字(如果需要)。
在您获得明确计数的情况下,您可以使用名为HyperLogLog的算法。你可以看一个使用Twitter实现的HyperLogLog(一个名为AlgeBird的库的一部分)来自spark here
的示例