【问题标题】:Comparing records from dstream比较来自 dstream 的记录
【发布时间】:2017-03-13 18:02:15
【问题描述】:

我有一个使用 Apache Spark 的案例,我喜欢在其中分析传感器流。流存在来自各种传感器的传感器数据,但都推送相同类型的数据。

从这个流中,我想知道每个传感器的特定值低于某个阈值的时间。传感器每 x 秒提交一次记录,其中包含:时间戳和值。我喜欢提取传感器低于该值的间隔,以获得持续时间、间隔的开始时间、间隔的结束时间和平均值。 我不确定从所有连接的传感器中提取每个间隔的持续时间、开始时间和结束时间的正确(“Sparkish”)方法。

我目前使用的方法是带有一些状态变量的 foreach 循环,以唯一标记每个记录,如果它是来自特定传感器的间隔的一部分。当记录被标记时,使用 map-reduce 方法来提取所需的信息。但是我对 foreach 循环感到不舒服,因为它不适合 map-reduce 方法,因此当工作分配给工作人员时不能很好地扩展。 更笼统地说,我面临着比较 rdd 中的单个记录和来自不同 dstream 的记录的挑战。

任何人都知道这样一个(微不足道的)案例,并且知道解决这个问题的更好/更优雅的方法。

【问题讨论】:

    标签: scala apache-spark spark-streaming


    【解决方案1】:

    我发现最好的方法是使用 mapWithState()。此函数提供了一种优雅而灵活的方式来维护来自连续 dstream 的值之间的状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      相关资源
      最近更新 更多