在 Azure Databricks 上設定結構化串流批次大小
限制結構化串流查詢的輸入速率有助於維持一致的批次大小,並防止大型批次導致溢出和串連微批處理延遲。
Azure Databricks 提供相同的選項來控制 Delta Lake 和自動載入器的結構串流批次大小。
Limit 輸入速率與 maxFilesPerTrigger 相關
設定 maxFilesPerTrigger
(或自動載入器 cloudFiles.maxFilesPerTrigger
)會指定每個微批次中處理之檔案數目的上限。 針對 Delta Lake 和自動載入器,預設值為 1000。 (請注意,此選項在 Apache Spark 針對其他檔案來源時也存在;where 預設沒有最大值。)
使用 maxBytesPerTrigger Limit 輸入速率
設定 maxBytesPerTrigger
(或自動載入器 cloudFiles.maxBytesPerTrigger
)會為每個微批次中處理的數據量設定「軟最大值」。 這表示批次會處理大約這個數據量,並且在有需要的情況下可能會處理多於 limit 的數據量,以便當最小輸入單位大於 limit的時候,讓串流查詢能夠向前推進。 此設定沒有預設值。
例如,如果您指定一個位元組字串範圍,例如 10g
到 limit,並將每個微批作業設為 10 GB 的數據,而您持有每個 3 GB 的檔案,則 Azure Databricks 在一個微批作業中將處理 12 GB 的數據。
將多個輸入速率一起設定
如果您使用 maxBytesPerTrigger
搭配 maxFilesPerTrigger
,則微批次會處理數據,直到達到 maxFilesPerTrigger
或 maxBytesPerTrigger
中較低的 limit 為止。
限制其他結構化串流來源的輸入速率
Apache Kafka 等串流來源都有自訂輸入限制,例如 maxOffsetsPerTrigger
。 如需詳細資訊,請參閱 設定串流資料來源。