【发布时间】:2017-03-13 18:02:15
【问题描述】:
我有一个使用 Apache Spark 的案例,我喜欢在其中分析传感器流。流存在来自各种传感器的传感器数据,但都推送相同类型的数据。
从这个流中,我想知道每个传感器的特定值低于某个阈值的时间。传感器每 x 秒提交一次记录,其中包含:时间戳和值。我喜欢提取传感器低于该值的间隔,以获得持续时间、间隔的开始时间、间隔的结束时间和平均值。 我不确定从所有连接的传感器中提取每个间隔的持续时间、开始时间和结束时间的正确(“Sparkish”)方法。
我目前使用的方法是带有一些状态变量的 foreach 循环,以唯一标记每个记录,如果它是来自特定传感器的间隔的一部分。当记录被标记时,使用 map-reduce 方法来提取所需的信息。但是我对 foreach 循环感到不舒服,因为它不适合 map-reduce 方法,因此当工作分配给工作人员时不能很好地扩展。 更笼统地说,我面临着比较 rdd 中的单个记录和来自不同 dstream 的记录的挑战。
任何人都知道这样一个(微不足道的)案例,并且知道解决这个问题的更好/更优雅的方法。
【问题讨论】:
标签: scala apache-spark spark-streaming