通过


在 Azure Databricks 上配置结构化流式处理批大小

本页介绍如何使用允许控件来维护流式处理查询的一致批大小。

允许控制会限制结构化流式处理查询的输入速率,这有助于保持一致的批大小,并防止大型批处理导致溢出和级联微批处理延迟。

Azure Databricks 提供用于控制 Delta Lake 和 Auto Loader 中 Structured Streaming 批大小的相同选项。

注释

可以修改许可控制设置,而无需重置流式处理查询的检查点。 请参阅在结构化流式处理查询发生更改后恢复

更改允许控制设置以增加或减小批大小会影响性能。 若要优化工作负荷,可能需要调整计算配置。

警告

如果在流停止时计划微分批,则在计划的微分包完成之前,对允许控件所做的任何更改都不会生效。 例如,当流在事务失败后停止时,可能需要删除检查点以强制流使用新的允许控制重新处理事务。 发生此行为的原因是结构化流式处理具有幂等性,微批处理在重复执行时必须包含相同的数据。 请参阅 结构化流式处理语义

使用 maxFilesPerTrigger 限制输入速率

设置 maxFilesPerTrigger(或自动加载程序 cloudFiles.maxFilesPerTrigger)为每个微批处理中处理的文件数指定上限。 对于 Delta Lake 和自动加载程序,默认值为 1000。 (请注意,此选项也存在于 Apache Spark 中用于其他文件源,默认情况下没有最大值。

使用 maxBytesPerTrigger 限制输入速率

设置 maxBytesPerTrigger(或自动加载程序 cloudFiles.maxBytesPerTrigger)会为每个微批处理中处理的数据量设置“软最大值”。 这意味着,批处理处理的数据量大约相当于这个数值,并且在最小输入单元大于这个限制时,可能会处理超过限制的数据量,以便推动流式查询的进展。 此设置没有默认值。

例如,如果指定字节字符串(例如 10g)将每个微分块限制为 10 GB 的数据,并且每个文件为 3 GB,则 Azure Databricks 在微分包中处理 12 GB。

将多个输入速率设置在一起

如果将 maxBytesPerTriggermaxFilesPerTrigger结合使用,则微批处理将处理数据,直到达到 maxFilesPerTriggermaxBytesPerTrigger的下限。

限制其他结构化流式处理源的输入速率

Apache Kafka 等流式处理源都有自定义输入限制,例如 maxOffsetsPerTrigger。 有关详细信息,请参阅 Lakeflow Connect 中的标准连接器