在 Delta Live Tables 管線上執行更新
本文說明管線更新,並提供如何觸發更新的詳細數據。
什麼是管線更新?
在建立管線並準備好執行後,您即可啟動 更新。 管線更新會執行下列動作:
- 使用正確的設定啟動叢集。
- 探索所有已定義的數據表和檢視,並檢查是否有任何分析錯誤,例如無效的數據行名稱、遺漏相依性和語法錯誤。
- 使用最新的可用數據,建立或更新數據表和檢視。
使用 驗證更新,您可以檢查管線原始程式碼中是否有問題,而不需要等待建立或更新資料表。 這項功能在開發或測試管線時很有用,因為它可讓您快速尋找並修正管線中的錯誤,例如不正確的數據表或數據行名稱。
如何觸發管線更新?
使用下列其中一個選項來啟動管線更新:
更新觸發程式 | 詳細資訊 |
---|---|
手冊 | 您可以從管線 UI、管線清單或連結至管線的筆記本手動觸發管線更新。 請參閱 手動觸發管道更新 和 在筆記本中開發及偵錯 Delta Live Tables 管道。 |
已排程 | 您可以使用作業來排程管線的更新。 請參閱 Delta Live Tables 管線工作以了解作業。 |
程式化 | 您可以使用第三方工具、API 和 CLIs,以程式設計方式觸發更新。 請參閱 在工作流程 和 管線 API中執行 Delta Live Tables 管線。 |
手動觸發管線更新
使用下列其中一個選項手動觸發管線更新:
- 在管道詳細資訊頁面上,點擊 [
] 按鈕。
- 從管線清單中,按一下
動作 資料行中的 。
注意
手動觸發管線更新的預設行為是重新整理管線中定義的所有數據集。
管線刷新語意
下表描述實體化視圖和流式資料表的行為模式,適用於預設重新整理和完整重新整理:
更新類型 | 具現化檢視語義 | 串流數據表語意 |
---|---|---|
重新整理(預設值) | 更新結果以反映定義查詢的目前結果。 | 透過串流數據表和流程中定義的邏輯來處理新的記錄。 |
完整重新整理 | 更新結果以反映定義查詢的目前結果。 | 從串流數據表清除數據、清除流程的狀態資訊(檢查點),然後重新處理數據源中的所有記錄。 |
根據預設,管線中所有實體化檢視和串流表會隨著每次更新重新整理。 您可以使用下列功能,選擇性地省略更新中的數據表:
- 選取要重新整理的數據表:在執行更新之前,使用此 UI 新增或移除具體化檢視和串流數據表。 請參閱 啟動所選數據表的管線更新。
- 更新失敗的資料表:啟動更新程序來修復失敗的具現化檢視和串流資料表,包括所有下游的相依項目。 請參閱 啟動管線更新以修正失敗的表格。
這兩項功能都支援預設刷新語意或完整刷新。 您可以選擇性地使用 [選取數據表以進行重新整理] 對話框,在執行失敗數據表的重新整理時排除其他數據表。
我應該使用完整重新整理嗎?
Databricks 建議只在必要時執行完整重新整理。 完整重新整理一律會透過定義數據集的邏輯,重新處理來自指定數據源的所有記錄。 完成完整重新整理的時間和資源會與源數據的大小相互關聯。
具體化視圖無論是使用預設重新整理還是完整重新整理,都會傳回相同的結果。 使用完整重新整理搭配串流資料表會重設所有狀態資訊和檢查點資訊,而且如果輸入資料不再可用,可能會導致記錄丟失。
當輸入數據源包含重新建立數據表或檢視所需狀態所需的數據時,Databricks 只會建議完整重新整理。 請考慮下列案例,其中輸入源數據已不再可用,以及執行完整重新整理的結果:
數據源 | 原因輸入數據不存在 | 完整重新整理的結果 |
---|---|---|
卡 夫 卡 | 短期保存閾值 | Kafka 來源中不再存在的記錄會從目標資料表刪除。 |
物件記憶體中的檔案 | 生命周期原則 | 源目錄中不再存在的數據檔會從目標數據表卸除。 |
數據表中的記錄 | 已刪除以符合法規 | 只會處理源數據表中存在的記錄。 |
若要防止在資料表或檢視表上執行完整重新整理,請將資料表屬性 pipelines.reset.allowed
設定為 false
。 請參閱 Delta Live Tables 數據表屬性。 您也可以使用 附加流程 將數據附加至現有的串流數據表,而不需要完整重新整理。
啟動所選資料表的資料流更新
您可以選擇只針對管線中選取的數據表重新處理數據。 例如,在開發期間,您只會變更單一數據表,而想要減少測試時間,或管線更新失敗,而您想要只重新整理 失敗的數據表,。
注意
您可以在觸發的管線上使用選擇性更新。
若要啟動只重新整理所選資料表的更新過程,請在 [管線詳細資料] 頁面上:
按兩下 [選取數據表以重新整理。 [選取數據表以進行重新整理] 對話框 隨即出現。
如果您沒有看到 [選取表格以重新整理] 按鈕,請確認 [管線詳細資料] 頁面顯示最新更新,且更新已完成。 例如,如果由於更新失敗,導致未顯示最新更新的 DAG,則不會顯示 [選取要重新整理的數據表] 按鈕。
若要選取要重新整理的數據表,請按下每個數據表。 選取的表會突出顯示並加上標籤。 若要從更新中移除數據表,請再次按兩下數據表。
請點擊 重新整理選取。
注意
[重新整理] 選取範圍 按鈕會顯示括弧中選取的數據表數目。
若要重新處理已擷取選取的資料表數據,請按一下 ,然後按一下 [重新整理選取] 按鈕旁的 [完整重新整理選取]。
啟動失敗數據表的管線更新
如果管線更新因為管線圖形中的一或多個數據表發生錯誤而失敗,您可以只啟動失敗數據表和任何下游相依性的更新。
注意
排除的數據表不會重新整理,即使它們相依於失敗的數據表也一樣。
若要更新失敗的數據表,請在
只更新選取的失敗資料表:
按鍵 [
重新整理失敗 資料表] 按鈕旁的 [ 按鈕,然後按兩下 [選取資料表以重新整理。 [選取數據表以進行重新整理] 對話框 隨即出現。
若要選取要重新整理的數據表,請按下每個數據表。 選取的表會突出顯示並加上標籤。 若要從更新中移除數據表,請再次按兩下數據表。
請點擊 重新整理選取。
注意
[重新整理] 選取範圍 按鈕會顯示括弧中選取的數據表數目。
若要重新處理已擷取選取的資料表數據,請按一下 ,然後按一下 [重新整理選取] 按鈕旁的 [完整重新整理選取]。
檢查管線是否有錯誤,而不需要等待數據表更新
重要
Delta Live Tables Validate
更新功能目前處於 公開預覽。
若要檢查管線的原始程式碼是否有效,而不執行完整更新,請使用 Validate。
Validate
更新會解析管線中定義的數據集和流程,但不會實現或發佈任何數據集。 驗證期間發現的錯誤,例如不正確的數據表或數據行名稱,會在UI中報告。
若要執行 Validate
更新,請在管線詳細頁面中,[開始] 旁邊按一下 [],然後按一下 [驗證]。
完成 Validate
更新之後,事件記錄檔會顯示只與 Validate
更新相關的事件,而且 DAG 中不會顯示任何計量。 如果找到錯誤,事件記錄檔中會提供詳細資料。
您只能看到最新 Validate
更新的結果。 如果 Validate
更新是最近執行的更新,您可以在 更新歷程記錄中選取結果,。 如果在 Validate
更新之後執行另一個更新,UI 中就無法再查看結果。
開發和生產模式
您可以在開發與生產模式之間切換,以優化管線執行。 使用管線 UI 中的 按鈕,在這兩種模式之間切換。 根據預設,管線會在開發模式中執行。
當您在開發者模式中執行流程時,Delta Live Tables 系統會執行下列動作:
- 重複使用叢集以避免重新啟動的額外負荷。 根據預設,叢集會在啟用開發模式時執行兩個小時。 您可以在 Delta Live Tables 管線中使用
配置運算的 設定來更改此項設定。 - 停用管線重試,讓您可以立即偵測並修正錯誤。
在生產模式中,Delta Live Tables 系統會執行下列動作:
- 重新啟動叢集,以因應部分可恢復的錯誤,包括記憶體洩漏和過期的認證憑證。
- 在發生特定錯誤時重試執行,例如無法啟動叢集。
注意
在開發和生產模式之間切換只會控制叢集和管線執行行為。 發行數據表目錄中的儲存位置和目標架構必須設定為管線設定的一部分,而且在模式之間切換時不會受到影響。