在 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 数据。
一起设置多个输入速率
如果将 maxBytesPerTrigger
与 maxFilesPerTrigger
结合使用,则微批处理将处理数据,直到达到 maxFilesPerTrigger
或 maxBytesPerTrigger
的下限。
限制其他结构化流式处理源的输入速率
Apache Kafka 等流式处理源都有自定义输入限制,例如 maxOffsetsPerTrigger
。 有关详细信息,请参阅配置流数据源。