本頁說明如何使用准入控制來維持串流查詢的批次大小一致。
許可控制會限制結構化串流查詢的輸入速率,這有助於維持一致的批次大小,並防止大型批次造成溢出和串連微批處理延遲。
Azure Databricks 提供相同的選項來控制 Delta Lake 和自動載入器的結構串流批次大小。
警告
若計畫在串流停止時進行微批次作業,任何進入控制的變更在計畫中的微批次作業完成後才會生效。 例如,當串流在交易失敗後停止時,你可能需要刪除檢查點,強制串流重新處理使用新的准入控制。 此行為是因為結構化串流是冪零的,微批次在重複執行時必須包含相同的資料。 參見 結構化串流語意學。
使用 MaxFilesPerTrigger 限制輸入速率
設定 maxFilesPerTrigger(或自動載入器 cloudFiles.maxFilesPerTrigger)會指定每個微批次中處理之檔案數目的上限。
使用 maxBytesPerTrigger 限制輸入速率
設定 maxBytesPerTrigger(或自動載入器 cloudFiles.maxBytesPerTrigger)會為每個微批次中處理的數據量設定「軟最大值」。 這表示批次會處理大約這個數據量,而且可能會處理超過限制,以便在最小輸入單位大於此限制的情況下,讓串流查詢向前移動。 此設定沒有預設值。
例如,如果您指定位元組字串,例如 10g,以將每個微批處理限制為 10 GB 的數據,且您每個檔案為 3 GB,Azure Databricks 會在微批處理中處理 12 GB。
將多個輸入速率一起設定
如果您使用 maxBytesPerTrigger 搭配 maxFilesPerTrigger,則微批次會處理數據,直到達到 maxFilesPerTrigger 或 maxBytesPerTrigger的下限為止。
限制其他結構化串流來源的輸入速率
Apache Kafka 等串流來源都有自訂輸入限制,例如 maxOffsetsPerTrigger。 欲了解更多細節,請參閱 選擇標準連接器。