带水印的Spark结构化流重复数据删除系统

1 人关注

我想在一个ETL工作中使用Spark结构化流,每个事件都是有形式的。

"signature" : "uuid" , "timestamp: " 2020 -01 -01 00 : 00 : 00 ", " payload ": {...}

这些事件可能晚到30天,并且可能包括重复的事件。我想根据 "签名 "字段来删除它们。

如果我使用推荐的解决方案。

streamingDf \
  .withWatermark("timestamp", "30 days") \
  .dropDuplicates("signature", "timestamp")
  .write

它是否会跟踪(在内存中保持,存储等)整个事件内容的缓冲区(可能相当大),或者它将只跟踪 "签名 "字段的值?

另外,像上面这样的简单查询会在新数据到达时立即写入新事件,还是会 "阻塞 "30天?

apache-spark
pyspark
spark-structured-streaming
unvadim
unvadim
发布于 2021-09-24
1 个回答
Michael Heil
Michael Heil
发布于 2021-10-01
已采纳
0 人赞同

"它是否会跟踪(保留在内存中,存储等)整个事件内容的缓冲区(可能相当大),还是只跟踪 "签名 "字段的值?"

是的,它将保留 streamingDf 的所有列,而不仅仅是签名和时间戳列。

"另外,像上面这样的简单查询会在新数据到达时立即写入新事件,还是会 "阻塞 "30天?"