如何使用火花流对特定事件做出反应

时间:2017-01-07 15:52:02

标签: apache-spark spark-streaming

我是Spark流媒体的新手并且有以下情况:

  • 多个(健康)设备将其数据发送到我的服务,每个事件至少包含以下数据(userId,timestamp,pulse,bloodPressure)。
  • 在DB中,每个用户都有脉搏和血压的阈值。

用例:

  • 我想制作一个带有Spark流媒体的滑动窗口,计算脉冲和血压的平均每个用户,假设在10分钟内。
  • 10分钟后我想检查数据库是否超过阈值每个用户并执行操作,例如打电话给休息服务发送警报。

有人可以告诉我,如果Spark通常可以做到这一点,如果是的话,请指出正确的方向吗?

1 个答案:

答案 0 :(得分:1)

这绝对是可能的。尽管如此,它不一定是最好的工具。这取决于您期望的输入量。如果你有成千上万的设备每秒发送一个事件,那么Spark可能是合理的。无论如何,我无法验证您的架构选择,但请记住,只有当一台机器无法处理数据量时,才能使用Spark来处理这些用例。

此外,如果警报的延迟很重要而且一两秒有所不同,那么Spark并不是最好的工具。单台机器上的处理器可以实现更低的延迟。否则使用更像流式传输的东西,比如Apache Flink。

作为一般建议,如果你想在Spark中做,你只需要创建一个源(我不知道你的数据来自哪里),在广播变量中加载阈值(假设它们是随着时间的推移而不变)并编写逻辑。要进行其余调用,请使用forEachRdd作为输出接收器并在那里实现调用逻辑。