总结Structured Streaming中的输出模式Output Mode和触发器Trigger。
输出模式Output Mode
Structured Streaming 中有几种类型的输出模式:
- Append mode: Append模式。默认。只将自上次
触发
以来添加到结果表
中的行输出到接收器
。 - Update mode: Update模式。只将自上次
触发
以来结果表
中更新的行输出到接收器
。 - Complete mode: Complete模式。每次
触发
后,都会将整个结果表
输出到接收器
。只适用于聚合查询。
查询类型 | 支持的输出模式 | 注意 |
聚合查询:带WaterMark的EventTime聚合 如: GlobalAgg、WindowAgg | Append、Update、Complete | Append 模式 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模式。 |
MapGroupsWithState | Update | |
FlatMapGroupsWithState | Append、Update | 1. Append模式下,在flatMapGroupsWithState之后,可再有聚合操作。 2. Update模式下, 在flatMapGroupsWithState之后,不允许再有聚合操作。 |
其他查询(非聚合查询) | Append、Update | 不支持Complete模式,将所有未聚合的数据都保留在结果表中是不可行的。 |
触发器Trigger
触发器决定了多久执行一次查询并输出结果。
Trigger类型 | 使用 | 注意 |
Fixed Interval micro-batch(固定间隔的微批) |
| 1. 没有明确指明触发器时,默认使用该触发器,即 2. 该模式下,将按用户指定的时间间隔启动微批处理。 3. 如果前一个微批在该间隔内完成,则引擎将等待该间隔结束,然后再开始下一个微批处理。 4. 如果前一个微批花费的时间比间隔要长,下一个微批将在前一个微批处理完成后立即开始。 5. 如果没有新数据可用,则不会启动微批处理。 |
One-time micro-batch (一次性微批) |
| 仅执行一个微批处理来处理所有可用数据,然后自行停止。适用于一次性作业。 |
Continuous with fixed checkpoint interval(连续处理) |
| 以固定的Checkpoint间隔( |