结构化流式处理的生产注意事项
本文包含的建议用于通过 Azure Databricks 上的结构化流式处理配置生产增量处理工作负荷,以满足实时或批处理应用程序的延迟和成本要求。 了解 Azure Databricks 上结构化流式处理的关键概念有助于在纵向扩展数据量和速度并从开发转移到生产时避免落入常见的陷阱。
Azure Databricks 引入了增量实时表,以降低管理结构化流式处理工作负载的生产基础结构的复杂性。 Databricks 建议将增量实时表用于新的结构化流式处理管道;请参阅什么是增量实时表?。
注意
计算自动缩放在缩减结构化流式处理工作负载的群集大小方面存在限制。 Databricks 建议将增量实时表与增强式自动缩放用于流式处理工作负载。 请参阅使用增强型自动缩放来优化增量实时表管道的群集利用率。
将笔记本用于结构化流式处理工作负载
使用 Databricks 笔记本进行交互式开发需要你将笔记本附加到群集,以便手动执行查询。 可以使用作业安排 Databricks 笔记本进行自动部署和从查询失败中自动恢复。
可以在交互式开发期间可视化笔记本中的结构化流式处理查询,或用于生产工作负载的交互式监视。 仅当有人定期监视笔记本的输出时,才应可视化生产中的结构化流式处理查询。 虽然 trigger
和 checkpointLocation
参数是可选的,但 Databricks 建议在生产中始终指定它们,这是最佳做法。
控制 Azure Databricks 上结构化流式处理的批处理大小、频率和输出模式
Azure Databricks 上的结构化流式处理具有增强的选项,可在使用自动加载程序和 Delta Lake 进行流式传输时帮助控制成本和延迟。 输出模式可用于控制 Azure Databricks 写入接收器的方式。
什么是有状态流式处理?
有状态结构化流式处理查询需要对中间状态信息进行增量更新,而无状态结构化流式处理查询仅跟踪有关从源到接收器已处理哪些行的信息。
有状态操作包括流式处理聚合、流式处理 dropDuplicates
、流间联接、mapGroupsWithState
和 flatMapGroupsWithState
。
如果配置不正确,有状态结构化流式处理查询所需的中间状态信息可能会导致意外延迟和生产问题。
在 Databricks Runtime 13.3 LTS 及更高版本中,可以使用 RocksDB 启用更改日志检查点,以降低结构化流工作负载的检查点持续时间和端到端延迟。 Databricks 建议为所有“结构化流式处理”有状态查询启用更改日志检查点。 请参阅启用更改日志检查点。