流式查询的触发器设置定义流式数据处理的时间,查询是作为具有固定批处理间隔的微批量查询还是作为连续处理查询来执行。 以下是支持的各种触发器。
- 默认触发器
如果没有显示的制定triger,默认情况下查询会以微批模式进行查询处理,当前批次处理完之后立即产生下个批次。
df.writeStream
.format("console")
.start()
2.固定间隔微批
查询将以微批量模式执行,其中微批次将以用户指定的间隔启动。
- 如果先前的微批次在该间隔内完成,则引擎将等待该间隔结束,然后开始下一个微批次。
- 如果前一个微批次需要的时间超过完成的时间间隔(即如果错过了区间边界),那么下一个微批次将在前一个完成后立即开始(即,它不会等待下一个间隔边界) )。
- 如果没有可用的新数据,则不会启动微批次。
df.writeStream
.format("console")
.trigger(Trigger.ProcessingTime("2 seconds"))
.start()
3.一次性微批次
查询将执行仅一个微批处理所有可用数据,然后自行停止。这在希望定期启动集群,处理自上一个时间段以来可用的所有内容,然后关闭集群的方案中非常有用。在某些情况下,这可能会显着节省成本。
df.writeStream
.format("console")
.trigger(Trigger.Once())
.start()
4.使用固定checkpoint间隔
这个是实验性的接口。查询将以新的低延迟,连续处理模式执行。
df.writeStream
.format("console")
.trigger(Trigger.Continuous("1 second"))
.start()