Apache spark 如何使用火花流对特定事件作出反应

Apache spark 如何使用火花流对特定事件作出反应,apache-spark,spark-streaming,Apache Spark,Spark Streaming,我是Spark streaming的新手,有以下情况: 多个(健康)设备将其数据发送到我的服务,每个事件中至少包含以下数据(用户名、时间戳、脉搏、血压) 在DB中,我为每个用户设置了脉搏和血压的阈值 用例: 我想用Spark streaming制作一个滑动窗口,计算每个用户的脉搏和血压的平均值,比如说10分钟内 10分钟后,我想检查数据库中的值是否超过每个用户的阈值,,并执行操作,例如调用rest服务发送警报 有没有人能告诉我,在Spark中,这通常是可能的,如果是,请给我指出正确的方向

我是Spark streaming的新手,有以下情况:

  • 多个(健康)设备将其数据发送到我的服务,每个事件中至少包含以下数据(用户名、时间戳、脉搏、血压)
  • 在DB中,我为每个用户设置了脉搏和血压的阈值
用例:

  • 我想用Spark streaming制作一个滑动窗口,计算每个用户的脉搏和血压的平均值,比如说10分钟内
  • 10分钟后,我想检查数据库中的值是否超过每个用户的阈值,并执行操作,例如调用rest服务发送警报

有没有人能告诉我,在Spark中,这通常是可能的,如果是,请给我指出正确的方向?

这绝对是可能的。不过,这并不一定是最好的工具。这取决于您期望的输入量。如果你有几十万台设备每秒发送一个事件,也许Spark是合理的。无论如何,验证您的体系结构选择并不取决于我,但请记住,只有在单个计算机无法处理大量数据的情况下,对这些用例使用Spark才有意义

此外,如果警报的延迟很重要,一两秒钟就可以改变,那么Spark不是最好的工具。单机上的处理器可以实现更低的延迟。否则,请使用更面向流的工具,如ApacheFlink


作为一般建议,如果您想在Spark中执行此操作,只需创建一个源(我不知道您的数据来自何处),将阈值加载到广播变量中(假设它们随时间保持不变),然后编写逻辑。要进行rest调用,请使用
forEachRdd
作为输出接收器,并在那里实现调用逻辑。

感谢@Chobeat的回答。我的数据来自卡夫卡。延迟不是一个大因素,在几秒钟内就可以了。您是否可以制作一个小代码段?不,这超出了本网站的范围。