使用Checkpoint进行Spark流式传输

时间:2015-01-20 10:05:22

标签: apache-spark spark-streaming

我是一个引发流媒体的初学者。因此对检查点有一个基本的疑问。我的用例是按天计算唯一用户的数量。我正在使用按键和窗口缩小。我的窗口持续时间为24小时,滑动持续时间为5分钟。我正在将处理过的记录更新为mongodb。目前我每次都会更换现有记录。但我看到记忆力随着时间的推移逐渐增加,并在1小时半后杀死这个过程(在小实例中)。重新启动后DB写入清除所有旧数据。所以我理解检查点就是解决方案。但我怀疑是

  • 我的检查点持续时间应该是多少?根据文档,它说5-10倍的幻灯片持续时间。但我需要一整天的数据。所以可以保持24小时。
  • 理想情况下检查点应该在哪里?最初在我收到流时或在窗口操作之前或数据缩减之后。

  •     感谢您的帮助。
    谢谢

    1 个答案:

    答案 0 :(得分:5)

    在流式传输方案中,持有24小时数据通常太多了。要解决此问题,请使用概率方法而不是精确的流量测量方法,然后执行后续的批处理计算以获取确切的数字(如果需要)。

    在您获得明确计数的情况下,您可以使用名为HyperLogLog的算法。你可以看一个使用Twitter实现的HyperLogLog(一个名为AlgeBird的库的一部分)来自spark here

    的示例