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