首页 > 解决方案 > Spark Structured-Streaming - 未聚合数据上的水印

问题描述

我正在尝试从结构化流数据集中删除后期数据。

使用 spark 的 withWatermark 函数并没有帮助,后期数据也不会丢失。

我的数据集在事件时间列上没有聚合,所以这可能是原因,根据 sparks internals,水印用于状态管理,但我想用它来删除迟到的数据。

有没有其他方法可以强制火花兑现水印?

在日志中,我看到应用了水印(我之前正在发送数据以更新水印):

"eventTime" : {
"avg" : "2020-04-08T14:10:01.532Z",
"max" : "2020-04-12T02:10:01.532Z",
"min" : "2020-04-05T02:10:01.532Z",
"watermark" : "2020-04-09T02:00:01.532Z"
}

但旧事件仍写入结果。

标签: apache-sparkspark-structured-streamingwatermark

解决方案


我遇到了同样的问题。我在文档中看到它不能保证 Spark 会丢弃旧数据。这是官方文档的截图


推荐阅读