Apache Spark 结构化流式处理是一个准实时处理引擎,它使用熟悉的 Spark API 提供端到端容错和“恰好一次”处理保证。 使用结构化流处理,您可以像处理静态数据的批量计算一样,表达对流处理数据的计算。 结构化流式处理引擎以增量方式执行计算,并在流数据抵达时持续更新结果。
有关分步教程,请参阅 运行您的第一个结构化流式处理工作负载的步骤。
从数据流读取
使用结构化流式处理以增量方式引入受支持数据源中的数据。
| 功能 | 说明 |
|---|---|
| 自动加载程序 | 随着新数据文件到达云存储,增量式且高效地处理它们。 |
| 增量表流式读取和写入 | 使用 Delta Lake 表作为流式处理源和接收器,并提供一次性处理保证。 |
| 标准连接器 | 使用标准连接器连接到消息总线、队列和企业应用程序。 |
| 微批大小 | 限制输入速率以保持一致的批大小并防止处理延迟。 |
写入到数据接收器
配置结构化流式处理如何将数据传送到目标系统。
| 功能 | 说明 |
|---|---|
| 检查点 | 存储处理状态以启用容错和一次性传递语义。 |
| 输出模式 | 可以选择追加、更新和完成模式来处理有状态流式查询。 |
| 触发器间隔 | 设置触发器间隔以平衡处理要求的延迟和成本。 |
| 结构化流式处理中的实时模式 | 处理实时工作负载的数据,端到端延迟低至 5 毫秒。 |
有状态和无状态处理
无状态查询在不保留状态的情况下处理行。 有状态查询维护聚合、联接和重复数据删除的中间状态。
| 功能 | 说明 |
|---|---|
| 无状态流式处理查询 | 优化在不保持中间状态的情况下处理数据的查询。 |
| 水印 | 控制结构化流式处理在有状态操作中等待延迟到达的数据的时间。 |
| 有状态流式处理 | 使用状态运算符来管理聚合、流与流连接及重复数据删除。 |
监视和管理
跟踪查询性能、应用优化并管理生产结构化流媒体工作负载中的数据访问。
| 功能 | 说明 |
|---|---|
| 使用 StreamingQueryListener 进行监视 | 使用 Spark UI 和侦听器 API 跟踪查询进度和性能指标。 |
| 使用 Unity 目录进行治理 | 使用治理和访问控制为流处理负载配置 Unity Catalog。 |