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

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

Azure Databricks 提供相同的选项来控制 Delta Lake 和自动加载程序的结构化流式处理批大小。

使用 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。 有关详细信息,请参阅配置流数据源