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

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

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

Azure Databricks 提供相同的选项来控制 Delta Lake 和 Auto Loader 的结构化流处理批大小。

注释

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

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

警告

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

使用 maxFilesPerTrigger 限制输入速率

设置 maxFilesPerTrigger(或自动加载程序 cloudFiles.maxFilesPerTrigger)为每个微批处理中处理的文件数指定上限。

使用 maxBytesPerTrigger 限制输入速率

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

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

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

如果将 maxBytesPerTrigger 与 maxFilesPerTrigger结合使用,则微批处理将处理数据,直到达到 maxFilesPerTrigger 或 maxBytesPerTrigger的下限。

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

Apache Kafka 等流式处理源都有自定义输入限制,例如 maxOffsetsPerTrigger。 更多细节请参见 选择标准连接器。