apache-spark - 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"
}
但旧事件仍写入结果。
解决方案
我遇到了同样的问题。我在文档中看到它不能保证 Spark 会丢弃旧数据。这是官方文档的截图
推荐阅读
- reverse-engineering - 来自蛮力脚本的 Z3Py 求解器
- python - 如何在 python 中将关于时间的字符串拆分为单独的变量(hr、min、sec)?
- machine-learning - 评估替代分类器时,RandomizedSearchCV 在管道中不起作用
- python-3.x - 运行 JupyterHub 的 validate_elements 中的 Python Traitlets 错误
- python-3.x - matplotlib 图形在不调用 plt.show() 的情况下显示,plt.show() 不会在 Jupyter Notebook 的单独单元格中显示图形
- php - Laravel API 只返回最新的记录,而不是数据库中显示的用户下的所有记录
- python - 使用python在包含混乱用户条目的巨大文本文件中拆分行
- javascript - 如何使用 puppeteer 确认弹出警报
- flutter - setState() 不改变容器属性
- google-api - 检测用户何时无法访问用于 Google 登录的 Google 帐户