总结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(固定间隔的微批) | 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的延迟。 |
561

被折叠的 条评论
为什么被折叠?



