本文說明管線更新,並提供如何觸發更新的詳細數據。
什麼是管線更新?
在建立管線並準備好執行後,您即可啟動 更新。 管線更新會執行下列動作:
- 使用正確的組態啟動叢集。
- 探索所有已定義的數據表和檢視,並檢查是否有任何分析錯誤,例如無效的數據行名稱、遺漏相依性和語法錯誤。
- 使用最新的可用數據,建立或更新數據表和檢視。
使用 試運行,您可以檢查管道原始程式碼中的問題,而無需等待建立或更新表格。 這項功能在開發或測試管線時很有用,因為它可讓您快速尋找並修正管線中的錯誤,例如不正確的數據表或數據行名稱。
如何觸發管線更新?
使用下列其中一個選項來啟動管線更新:
| 更新觸發程式 | 詳細資訊 |
|---|---|
| 說明書 | 您可以從 Lakeflow 管線編輯器或管線清單手動觸發管線更新。 請參閱 手動觸發管線更新。 |
| 已排程 | 您可以使用作業來排程管線的更新。 請參閱 作業的管線工作。 |
| 程式化 | 您可以使用第三方工具、API 和 CLIs,以程式設計方式觸發更新。 請參閱 在工作流程中執行管線 和 管線 REST API。 |
手動觸發管線更新
使用下列其中一個選項手動觸發管線更新:
- 從 Lakeflow 管線編輯器執行完整管線或管線的子集 (單一來源檔案或單一資料表)。 如需詳細資訊,請參閱 執行管線程式碼。
- 從 [作業和管線 ] 清單執行完整管線。 點擊
,位於清單中與管線同列。
- 在管線監控頁面中,按一下
按鈕。
備註
手動觸發管線更新的預設行為是重新整理管線中定義的所有數據集。
管線刷新語意
下表描述具體化檢視和串流數據表的預設重新整理、完整重新整理和重設檢查點行為:
| 更新類型 | 具現化視圖 | 串流資料表 |
|---|---|---|
| 重新整理(預設值) | 更新結果以反映定義查詢的目前結果。 它會檢視成本,若成本效益較高,則進行增量更新。 請參見具體化視圖的增量刷新 | 透過串流數據表和流程中定義的邏輯來處理新的記錄。 |
| 完整重新整理 | 更新結果以反映定義查詢的目前結果。 | 從串流數據表清除數據、清除流程的狀態資訊(檢查點),然後重新處理數據源中的所有記錄。 請參見 串流表的完整刷新 |
| 重設串流檢查點 | 不適用於具體化檢視。 | 從流程清除狀態資訊(檢查點),但不會清除串流數據表中的數據,並重新處理數據源中的所有記錄。 |
根據預設,管線中所有實體化檢視和串流表會隨著每次更新重新整理。 您可以使用下列功能,選擇性地省略更新中的數據表:
- 選取要重新整理的數據表:在執行更新之前,使用此 UI 新增或移除具體化檢視和串流數據表。 請參閱 啟動所選數據表的資料流程更新。
- 更新失敗的資料表:啟動更新程序來修復失敗的具現化檢視和串流資料表,包括所有下游的相依項目。 請參閱 啟動管線更新以修正失敗的表格。
這兩項功能都支援預設刷新語意或完整刷新。 您可以選擇性地使用 [選取數據表以進行重新整理] 對話框,在執行失敗數據表的重新整理時排除其他數據表。
對於串流表,您可以選擇清除所選流的串流檢查點,而不清除來自相關串流表的數據。 若要清除所選流程的檢查點,請使用 Databricks REST API 開始重新整理。 請參閱 啟動管線更新,以移除特定串流流程的檢查點。
我應該使用全面刷新嗎?
Databricks 建議只在必要時執行完整重新整理。 完整重新整理一律會透過定義數據集的邏輯,重新處理來自指定數據源的所有記錄。 完成完整重新整理的時間和資源會與源數據的大小相互關聯。
具體化視圖無論是使用預設重新整理還是完整重新整理,都會傳回相同的結果。 使用完整重新整理搭配串流資料表會重設所有狀態資訊和檢查點資訊,而且如果輸入資料不再可用,可能會導致記錄丟失。 請參見 串流表的完整刷新
當輸入數據源包含重新建立數據表或檢視所需狀態所需的數據時,Databricks 只會建議完整重新整理。 請考慮下列案例,其中輸入源數據已不再可用,以及執行完整重新整理的結果:
| 數據源 | 原因輸入數據不存在 | 完整重新整理的結果 |
|---|---|---|
| Kafka | 短期保存閾值 | Kafka 來源中不再存在的記錄會從目標資料表刪除。 |
| 物件記憶體中的檔案 | 生命周期原則 | 源目錄中不再存在的數據檔會從目標數據表卸除。 |
| 數據表中的記錄 | 已刪除以符合法規 | 只會處理源數據表中存在的記錄。 |
若要防止在資料表或檢視表上執行完整重新整理,請將資料表屬性 pipelines.reset.allowed 設定為 false。 請參閱 管線資料表屬性。 您也可以使用 附加流程 將數據附加至現有的串流數據表,而不需要完整重新整理。
啟動所選資料表的資料流更新
您可以選擇只針對管線中選取的數據表重新處理數據。 例如,在開發期間,您只會變更單一數據表,而想要減少測試時間,或管線更新失敗,而您想要只重新整理 失敗的數據表,。
Lakeflow 管線編輯器具有重新處理來源檔案、選取的資料表或單一資料表的選項。 如需詳細資訊,請參閱 執行管線程式碼。
為失敗的數據表啟動管道更新
如果管線更新因為管線圖形中的一或多個數據表發生錯誤而失敗,您可以只啟動失敗數據表和任何下游相依性的更新。
備註
排除的數據表不會重新整理,即使它們相依於失敗的數據表也一樣。
若要更新失敗的資料表,請在管線監視頁面上,按一下 [重新整理失敗的資料表]。
若要從管線監控頁面只更新選取的失敗資料表:
按一下 [
] 按鈕旁邊的 [重新整理失敗的資料表] 按鈕,然後按一下 [選取資料表以重新整理]。
[選取數據表以進行重新整理] 對話框 隨即出現。若要選取要重新整理的數據表,請按下每個數據表。 選取的表會突出顯示並加上標籤。 若要從更新中移除數據表,請再次按兩下數據表。
請點擊 重新整理選取。
備註
[重新整理選擇] 按鈕 會顯示括號中選取的表格數目。
若要重新處理已擷取選取的資料表數據,請按一下
,然後按一下 [重新整理選取] 按鈕旁的 [完整重新整理選取]。
啟動管線更新以清除選擇性串流流程的檢查點
您可以選擇性地針對管線中選取的串流流程重新處理數據,而不需要清除任何已內嵌的數據。
備註
未被選取的流程會執行更新 REFRESH。 您也可以指定 full_refresh_selection 或 refresh_selection 選擇性地重新整理其他資料表。
若要啟動更新以重新整理選取的串流檢查點,請使用 Lakeflow Spark 宣告式管線 REST API 中的 更新 要求。
參數 reset_checkpoint_selection 接受一串流程名稱。 你必須以完整限定的 catalog.schema.flow_name 格式傳遞每個流程名稱。 僅使用簡短名稱(例如使用 my_flow 而不是 my_catalog.my_schema.my_flow)會導致管線更新失敗,並出現 IllegalArgumentException。
- 如果你為流程明確指定了名稱(例如,在
create_auto_cdc_flow中使用flow_name參數),則完整限定流程名稱為<catalog>.<schema>.<flow_name>。 - 如果你沒有設定明確的流程名稱,預設流程名稱就是格式上完全限定的目標資料表名稱
catalog.schema.table。
你可以在管線介面或管線事件日誌中找到流程名稱。
下列範例會使用 curl 命令來呼叫 updates 要求以啟動管線更新:
curl -X POST \
-H "Authorization: Bearer <your-token>" \
-H "Content-Type: application/json" \
-d '{
"reset_checkpoint_selection": ["my_catalog.my_schema.my_streaming_table"]
}' \
https://<your-databricks-instance>/api/2.0/pipelines/<your-pipeline-id>/updates
以下範例重設以自訂名稱定義的流程檢查點:
curl -X POST \
-H "Authorization: Bearer <your-token>" \
-H "Content-Type: application/json" \
-d '{
"reset_checkpoint_selection": ["my_catalog.my_schema.my_custom_flow_name"]
}' \
https://<your-databricks-instance>/api/2.0/pipelines/<your-pipeline-id>/updates
檢查管線是否有錯誤,而不需要等待數據表更新
這很重要
管線 Dry run 功能處於 公開預覽狀態。
若要檢查管線的原始程式碼是否有效,而不執行完整更新,請使用 試執行。 模擬執行會解析管線中定義的資料集和流程的定義,但不會實體化或發佈任何資料集。 在試運行期間發現的錯誤,例如不正確的表格或資料行名稱,會在UI中報告。
若要開始試運行,請在管線詳細資料頁面中按一下
,接著在 開始 旁邊點選 試運行。
試運行完成後,任何錯誤都會顯示在底部面板的事件匣中。 按一下事件匣將顯示底部面板中發現的任何問題。 此外,事件日誌只顯示與試跑相關的事件,且流程圖中不會顯示任何指標。 如果找到錯誤,事件記錄檔中會提供詳細資料。
您只能看到最近一次試運行的結果。 如果試執行是最近執行的更新,您可以在 更新歷程記錄中選取它來查看結果。 如果在試執行後執行另一個更新,結果便不再可在 UI 中查看。
更新執行行為
管線更新的行為取決於你如何觸發它:
- 使用立即執行從管線監控介面觸發的更新會採用快速啟動、以除錯為導向的行為。
- 從作業、Pipelines API 或連續管線觸發的更新會 使用自動重試及重啟功能。
對於觸發的管線,您可以在 Lakeflow 管線編輯器或管線監控頁面的下拉選單中選擇 「立即以不同設定執行」,以覆蓋特定運行的預設行為。
快速啟動、以除錯為重點的行為
用於 UI Run Now 和臨時更新。 這些運行是為了優化快速迭代:
- 重複使用叢集以避免重新啟動的額外負荷。 預設情況下,叢集會持續兩小時。 您可以在
pipelines.clusterShutdown.delay設定中使用來變更此設定。 - 停用管線重試,讓您可以立即偵測並修正錯誤。
自動重試與重啟行為
用於任務、API 觸發的更新和持續性管線。 這些運行優先考量可靠性與成本效益:
- 重新啟動叢集,以因應部分可恢復的錯誤,包括記憶體洩漏和過期的認證憑證。
- 在發生特定錯誤時重試執行,例如無法啟動叢集。
- 該叢集在完成任務後立即關閉。
備註
執行行為僅限於控制叢集和管線的執行。 目錄中用於發佈資料表的儲存位置與目標結構必須作為管線設定的一部分配置,且不會受到執行行為的影響。