本文說明如何使用許可控制來維護串流查詢的一致批次大小。
許可控制會限制結構化串流查詢的輸入速率,這有助於維持一致的批次大小,並防止大型批次造成溢出和串連微批處理延遲。
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。 如需詳細資訊,請參閱 Lakeflow Connect 中的標準連接器。