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