窗口分组聚合中的水印

时间:2017-10-11 15:02:41

标签: apache-spark spark-streaming

我正在阅读Spark Streaming Programming Guide Documentation,并根据事件时间查询数据处理。我附上了文档链接的屏幕截图,其中显示了即使在事件发生之前数据也在处理中。 12:21事件在12:10 - 12:20的窗口中处理。图像是对还是我错了?

enter image description here

2 个答案:

答案 0 :(得分:0)

在12:13有一个晚事件,这也是猫头鹰。我认为这是在12:20的剪辑中显示的时间范围为12:10-12:20。

我期望的12:21猫头鹰事件应该出现在12:20-12:30或12:15-12:25时间范围内。但是,这些没有显示在图中

答案 1 :(得分:0)

使用实时数据时,可能会出现延迟到达数据的情况,并且必须在较早的窗口数据上执行此数据的计算。在这种情况下,较早的窗口数据的结果存储在内存中,然后与延迟到达的数据聚合。但是,这可能会导致更高的内存消耗,因为历史数据会存储在内存中,直到丢失的数据到达为止,这可能会导致内存累积。在这些情况下,Spark流具有水印功能,当其到达阈值时,它将丢弃迟到的数据。

在某些情况下,由于丢弃这些值,因此业务结果可能不匹配。为了避免这些类型的问题,必须应用自定义功能来检查数据的时间戳,然后将其存储在HDFS或任何云原生对象存储系统中,以对数据执行批处理,而不是应用水印功能。这种实现会导致复杂性。