我每天都会收集传感器的数据,从那里我需要生成每日报告。 简化的输入数据如下:
case class measurement(Date: String, item: String, value: Integer)
该报告基于每个项目的最近10次测量。 问题是我们每天都没有所有项目的测量数据。其中一些可能会错过一天或连续几天。而且我们每天都会有新的项目(数据库中从未存在过)。
我试着看看使用Window和sql函数的最后一个ignoreNulls的解决方案,但它看起来并不好,因为我无法限制窗口的大小。如果将窗口大小设置为(t0,now)
,效率会很低我现在想到的是维护一组FIFO队列(每个项目一个队列)。对于每个进入的新数据集,我将需要遍历集合,读取数据并推送到相应的队列。在将新值推送到队列的同时,将丢弃队列中最旧的值。 这将适用于传统的旧式单机数据处理。但是我不知道如何使它与Spark一起使用。
感谢您的时间。