比较来自dstream

时间:2017-03-09 14:58:54

标签: scala apache-spark spark-streaming

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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