apache-spark - 了解 Spark 结构化流中的“附加”模式:如何删除旧数据?
问题描述
假设我想运行一个流式作业,它每 x 秒获取一次新数据,并为每个触发器输出新行而不进行任何聚合。例如:
val query = wordCounts.writeStream
.outputMode("append")
.trigger(Trigger.ProcessingTime("15 seconds"))
.format("console")
.start()
在 Spark 文档中,我看到以下内容:
“对输入的查询将生成“结果表”。每个触发间隔(例如,每 1 秒),新行都会附加到输入表,最终更新结果表。每当结果表更新时,我们会想要将更改的结果行写入外部接收器。”
“追加模式 - 只有自上次触发后追加在结果表中的新行才会写入外部存储。这仅适用于结果表中的现有行预计不会更改的查询。”
我知道在追加模式下,只有新行被写入控制台,但是“结果表”仍然会有来自以前触发器的历史行,对吗?所以,这个表的大小可能会在很长一段时间内增加。有没有办法从结果表中删除这些旧行,因为它们不需要并且不会更改?
我看到了窗口+水印功能,但这主要用于聚合查询,对吗?
解决方案
推荐阅读
- java - 如果不是付费内容,如何点击网页元素?- Selenium Webdriver (Java)
- bash - 触摸,打开,在 Mac 10.15.6 终端上不起作用,PATH 问题
- mongodb - 分面搜索和选择多个值 - mongodb $facet
- php - BadMethodCallException 调用未定义的方法 App\restaurent_name::session()
- java - 在请求正文中保存实体引用子实体的列
- android - 在 Android 8+ 上停止应用程序时,周期性任务被终止
- julia - 如何创建具有列表理解的二维数组?
- postgresql - 无法使用 postgres 中的触发器实现审计日志
- anaconda - 我无法加载我训练并保存的 nn 模型
- postgresql - 函数提供输入位于之间的间隔 id