我正在使用Apache Spark构建一个流学习应用程序。我的应用程序需要在固定时间间隔处理流数据,但在这些间隔之前或之后,可以让数据通过而不进行处理。因此,我对流中的所有项目都不感兴趣,只对在特定时间间隔出现的一些项目感兴趣(至少在训练部分是这样)。我无法弄清楚如何只处理流中的某些窗口,而忽略其他窗口。
回答:
如果消息包含时间戳,可以通过过滤符合预定时间间隔的“有趣”消息,并将这些消息传递给Spark进行处理来解决这个问题。
val dstream = ???val targetStream = dstream.filter(msg => withinInterval(timestamp(msg))}targetStream.forEachRDD(rdd => // 对过滤后的元素进行处理)