觸發與連續管線模式
本文說明 Delta Live Tables 之觸發和連續管線模式的操作語意。
管線模式與正在計算的數據表類型無關。 具體化檢視和串流數據表都可以在任一管線模式中更新。
若要在觸發和連續之間變更,請在建立或編輯管線時,使用 管線設定中的 [管線模式 ] 選項。 請參閱 設定 Delta Live Tables 管線。
注意
Databricks SQL 中定義的具體化檢視和串流數據表的重新整理作業一律會使用觸發的管線模式執行。
什麼是觸發的管線模式?
如果管線使用 觸發 模式,系統會在成功重新整理所有數據表或選取的數據表之後停止處理,確保更新中的每個數據表都會根據更新啟動時可用的數據重新整理。
什麼是連續管線模式?
如果管線使用持續執行,Delta Live Tables 會在資料來源送達時處理新資料,讓整個管線中的資料表保持最新狀態。
為避免在連續執行模式中發生不必要的處理,管線會自動監視相依的 Delta 資料表,並只在那些相依資料表的內容變更時執行更新。
選擇數據管線模式
下表醒目提示觸發和連續管線模式之間的差異:
關鍵問題 | 觸發 | 連續 |
---|---|---|
更新何時停止? | 自動完成一次。 | 持續執行,直到手動停止為止。 |
處理哪些資料? | 更新啟動時可用的數據。 | 所有資料到達設定的來源時。 |
最適合使用哪些資料新鮮度需求? | 資料更新每隔 10 分鐘、每小時或每天執行一次。 | 數據更新需要每隔 10 秒到幾分鐘。 |
觸發的管線可以減少資源耗用量和費用,因為叢集只執行足夠長的時間來更新管線。 不過,在觸發管線之前,將不會處理新的資料。 持續管線需要一律執行的叢集,其成本更高,但會降低處理延遲。
設定連續管線的觸發間隔
設定連續模式的管線時,您可以設定觸發間隔來控制管線針對每個流程啟動更新的頻率。
您可以使用 pipelines.trigger.interval
來控制流程更新資料表或整個管線的觸發間隔。 由於觸發的管線會處理每個數據表一次, pipelines.trigger.interval
因此 只會與連續管線搭配使用。
Databricks 建議在個別數據表上設定, pipelines.trigger.interval
因為串流和批次查詢有不同的預設值。 只有在處理需要控制整個管線圖形的更新時,才在管線上設定值。
您在 Python 或 SET
SQL 中使用 在資料表spark_conf
上設定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"
}
}