【问题标题】:How to react on specific event with spark streaming如何使用火花流对特定事件做出反应
【发布时间】:2017-01-08 04:32:31
【问题描述】:

我是 Spark 流媒体的新手,遇到以下情况:

  • 多个(健康)设备将它们的数据发送到我的服务,每个事件内部至少有以下数据(用户 ID、时间戳、脉搏、血压)。
  • 在数据库中,我为每个用户设置了脉搏和血压阈值。

用例:

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

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

【问题讨论】:

    标签: apache-spark spark-streaming


    【解决方案1】:

    这绝对是可能的。不过,它不一定是最好的工具。这取决于您期望的输入量。如果您有数十万台设备每秒发送一个事件,那么 Spark 可能是合理的。无论如何,验证您的架构选择不是由我来决定的,但请记住,只有在单台机器无法处理大量数据时,才对这些用例诉诸 Spark 才有意义。

    此外,如果警报的延迟很重要,并且一两秒会产生影响,那么 Spark 不是最好的工具。单台机器上的处理器可以实现更低的延迟。否则使用更面向流的东西,比如 Apache Flink。

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

    【讨论】:

    • 感谢@Chobeat 的回答。我的数据来自卡夫卡。延迟不是一个大因素,几秒钟内就可以了。能不能做个小代码sn-p?
    • 不,这超出了本网站的范围。
    猜你喜欢
    • 2018-08-09
    • 2021-03-05
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多