在 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 會在 microbatch 中處理 12 GB。
將多個輸入速率設定在一起
如果您搭配 maxFilesPerTrigger
使用 maxBytesPerTrigger
,微批次會處理資料,直到達到 或 maxBytesPerTrigger
的 maxFilesPerTrigger
下限為止。
限制其他結構化串流來源的輸入速率
Apache Kafka 等串流來源都有自訂輸入限制,例如 maxOffsetsPerTrigger
。 如需詳細資訊,請參閱 設定串流資料來源 。