我的汇总如下:
我使用结构化流技术来获取所有产品 id 及其平均值。值超过特定阈值。
val aggregatedDataset = streamDataset
.select($"id", $"time", $"value")
.withWatermark("$time", "5 minutes")
.groupBy(window($"time", "10 minutes", "60 seconds"), $"id").agg(avg("value") as "avg")
.filter($"avg" > 10)
然后将其发布到Kafka。但是,我看到相同 id 的多个记录,但记录不同。值,我认为是因为每批处理后都会触发输出。
那么,有一种方法只有在火花确定该窗口的聚集之后才触发该窗口的输出吗?
即使我在Kafka中允许这样的重复记录,也应如何处理以下情况:
特定产品 id 的平均高于阈值并发布了输出,但是在看到更多记录后平均实际上低于阈值。 Spark已经发布了以前的产品 id ,但实际上不应该发布。