觸發式與連續式管線模式
本文說明 DLT 觸發與連續管線模式的操作語意。
管線模式與正在計算的數據表類型無關。 具體化檢視和串流數據表都可以在任一管線模式中更新。
若要在觸發和連續之間變更,請在建立或編輯管線時,使用管線設定中的 管線模式 選項。 請參閱 設定 DLT 管線。
注意
Databricks SQL 中定義的具體化檢視和串流數據表的重新整理作業一律會使用觸發的管線模式執行。
什麼是觸發管線模式?
如果管線使用 觸發 模式,系統會在成功重新整理所有數據表或選取的數據表之後停止處理,確保更新中的每個數據表都會根據更新啟動時可用的數據重新整理。
什麼是連續管線模式?
如果管線使用 連續 執行,DLT 會在數據到達數據源時處理新的數據,讓整個管線中的數據表保持最新狀態。
為了避免在連續執行模式下進行不必要的處理,管線會自動監視相依的 Delta 表格,並只在這些相依表格的內容變更時執行更新。
選擇數據管線模式
下表比較了觸發管線模式和連續管線模式之間的差異:
關鍵問題 | 引發 | 連續的 |
---|---|---|
更新何時停止? | 完成後自動進行。 | 持續運行直到手動停止。 |
處理哪些數據? | 更新啟動時可用的數據。 | 所有數據到達設定的來源時。 |
哪些數據新鮮度需求最適合這個? | 數據更新每隔 10 分鐘、每小時或每天執行一次。 | 數據更新需要每隔 10 秒到幾分鐘。 |
觸發的管線可以減少資源耗用量和費用,因為叢集僅運行到完成更新管線所需的時間。 不過,在觸發管線之前,將不會處理新的數據。 持續管線需要一律執行的叢集,其成本更高,但會降低處理延遲。
設定連續管線的觸發間隔
設定連續模式的管線時,您可以設定觸發間隔來控制管線針對每個流程啟動更新的頻率。
您可以使用 pipelines.trigger.interval
來控制流程更新資料表或整個管線的觸發間隔時間。 由於觸發的管線會處理每個數據表一次,因此 pipelines.trigger.interval
只會與連續管線搭配使用。
Databricks 建議在個別數據表上設定 pipelines.trigger.interval
,因為串流和批次查詢有不同的預設值。 只有在處理需要控制整個管線圖形的更新時,才在管線上設定值。
您可以使用 Python 中的 spark_conf
或 SQL 中的 SET
,在數據表上設定 pipelines.trigger.interval
:
@dlt.table(
spark_conf={"pipelines.trigger.interval" : "10 seconds"}
)
def <function-name>():
return (<query>)
SET pipelines.trigger.interval=10 seconds;
CREATE OR REFRESH MATERIALIZED VIEW TABLE_NAME
AS SELECT ...
若要在管線上設定 pipelines.trigger.interval
,請將它新增至管線設定中的 configuration
物件:
{
"configuration": {
"pipelines.trigger.interval": "10 seconds"
}
}