Spark Structured Streaming Output Mode和Trigger

总结Structured Streaming中的输出模式Output Mode和触发器Trigger。

输出模式Output Mode

Structured Streaming 中有几种类型的输出模式:

  • Append mode: Append模式。默认。只将自上次触发以来添加到结果表中的行输出到接收器

  • Update mode: Update模式。只将自上次触发以来结果表中更新的行输出到接收器

  • Complete mode: Complete模式。每次触发后,都会将整个结果表输出到接收器。只适用于聚合查询。

查询类型支持的输出模式注意
聚合查询:带WaterMark的EventTime聚合
如: GlobalAgg、WindowAgg
Append、Update、CompleteAppend 模式
1. Append模式用WaterMark删除旧的聚合状态。
2. 仅在WaterMark >= Window End Time时,输出一次最终结果到结果表并写入到接收器。

Update 模式
1. Update模式用WaterMark删除旧的聚合状态。
2. 只要WaterMark < Window End Time, 就会触发聚合计算并输出。

Complete 模式
1. Complete模式不会删除旧的聚合状态。
2. 不论数据迟到多久,都会触发聚合计算。
聚合查询:不带WaterMark的聚合
如: GlobalAgg、WindowAgg
Update、Complete由于没有WaterMark,不会删除旧的聚合状态。
Join查询Append目前只支持Append模式。
MapGroupsWithStateUpdate
FlatMapGroupsWithStateAppend、Update1. Append模式下,在flatMapGroupsWithState之后,可再有聚合操作。

2. Update模式下, 在flatMapGroupsWithState之后,不允许再有聚合操作。
其他查询(非聚合查询)Append、Update不支持Complete模式,将所有未聚合的数据都保留在结果表中是不可行的。

触发器Trigger

触发器决定了多久执行一次查询并输出结果。

Trigger类型使用注意
Fixed Interval micro-batch(固定间隔的微批)Trigger.ProcessingTime(long interval, TimeUnit timeUnit)1. 没有明确指明触发器时,默认使用该触发器,即Trigger.ProcessingTime(0L), 表示将尽可能快地执行查询。

2. 该模式下,将按用户指定的时间间隔启动微批处理。

3. 如果前一个微批在该间隔内完成,则引擎将等待该间隔结束,然后再开始下一个微批处理。

4. 如果前一个微批花费的时间比间隔要长,下一个微批将在前一个微批处理完成后立即开始。

5. 如果没有新数据可用,则不会启动微批处理。
One-time micro-batch (一次性微批)Trigger.Once()仅执行一个微批处理来处理所有可用数据,然后自行停止。适用于一次性作业。
Continuous with fixed checkpoint interval(连续处理)Trigger.Continuous(long interval, TimeUnit timeUnit)以固定的Checkpoint间隔(interval)连续处理。在这种模式下,连续处理引擎将每隔一定的间隔(interval)做一次checkpoint,可获得低至1ms的延迟。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值