我有一個運行許多命令的 databricks 作業,最后它嘗試將結果保存到一個檔案夾中。但是,它失敗了,因為它試圖將檔案寫入檔案夾但檔案夾不存在。我只是創建了檔案夾。但是,如何讓它在不執行所有先前命令的情況下繼續離開它的位置。
uj5u.com熱心網友回復:
我假設通過Databricks 作業,您指的是在 Databricks 集群中運行非互動式代碼的方式。
我不認為你問的是可能的,即從以前在 Databricks 上運行的作業中獲取某個 Spark 任務的輸出。正如另一個答案中所指出的,“如果作業完成,那么所有處理過的資料都會消失”。這與 Spark 在幕后作業的方式有關。如果您對這個主題感到好奇,我建議您開始閱讀這篇關于Spark 中的轉換和操作的文章。
盡管您可以想到一些解決方法,例如,如果您對作業的某些中間輸出感到好奇,您可以決定將您的 DataFrame/Dataset 臨時寫入某個外部位置。通過這種方式,您可以通過讀取您的檢查點之一作為輸入,輕松地從您的首選點恢復作業。這種方法有點笨拙,我不推薦它,但如果您處于測驗/設計階段,您可能想要選擇它是一種快速而骯臟的解決方案。
更強大的解決方案將涉及將您的作業拆分為多個子作業并在它們之間設定上游和下游依賴關系。您可以使用Databricks 本機(任務依賴項部分)或與 Databricks 集成的外部調度程式(如 Airflow )來做到這一點。通過這種方式,您可以拆分您的任務,并且您將能夠對您的應用程式擁有更高的控制粒度。因此,如果寫入步驟再次失敗,您將能夠輕松地重新運行寫入。
uj5u.com熱心網友回復:
如果作業完成,則所有處理過的資料都消失了,直到您撰寫一些可以繼續處理的中間狀態(附加表等)。在大多數情況下,Spark 僅在寫入所提供轉換的執行結果時才實際執行代碼。
所以現在你只需要重新運行作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/353010.html
上一篇:將每月付款ID分配給每日現金流
