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