取消
顯示的結果
而不是尋找
你的意思是:

的選擇是什麼sys.exit(0)在磚嗎

拉瑪”id=
新的貢獻者三世

你好,

我們正在遷移項目從Cloudera磚。

. py文件中所有的代碼,我們決定保持相同的磚也試圖通過磚從GIT執行相同的工作流。

我們有兩種退出功能要求:

1。軟退出sys.exit(0) -當作業標準滿足某些條件,那麼我們做軟存在sys.exit(0),基本上終止輕輕地工作,標誌著成功的工作

2。工作與sys.exit終止(1)——當工作標準滿足某些條件,那麼我們做終止工作與sys.exit(1),基本上終止工作,標誌著失敗的工作。

上述標準工作如預期在任何Python環境中而不是磚。

在磚,sys.exit(1)以及sys.exit(0)被標記為失敗的工作。

我讀過一篇文章在社區,有人提到“使用spark.stop (), sc.stop (), system . exit()在您的應用程序可能會導致這種行為。磚管理上下文自行關閉。強行關閉這可能導致突然的行為。

鏈接:https://community.m.eheci.com/t5/data-engineering/why-do-i-see-my-job-marked-as-failed-on-the-dat..。

如果這是真的,那麼最好的選擇來實現sys.exit磚(0)?

任何幫助將大大讚賞。

僅供參考:. py文件中的代碼,我們不想使用筆記本電腦來刺激就業。

這裏有一個例子來執行和看到的行為:

進口 sys
bucket_name = “刺激”

如果 bucket_name = = “刺激” :
打印 ( ”成功。現有0”刺激。 )
sys.exit ( 0 )
# sys.exit(無)
#辭職()
#退出()
#返回0
# dbutils.exit (0)
# dbutils.quit ()
#返回
# soft_exit

其他的 :
打印 ( “失敗。DEV。現有1” )
sys.exit ( 1 )
打印 ( “如果其他“外 )

2接受解決方案

接受的解決方案

AndrewN”id=
新的貢獻者三世”id=
新的貢獻者三世

拉,

我檢查和建議是結構內部代碼以這樣一種方式,它返回從主函數滿足某些條件。我修改你的代碼下麵你所看到的。

# sys.exit(0)等效def main (): bucket_name =“刺激”如果bucket_name = =“刺激”:剩下的代碼返回# if __name__ = =“__main__”:主要()
我跑你的原始代碼和磚的工作顯示失敗。然後我跑了修改後的函數,它返回從主要工作顯示成功了。我相信這是最好的選擇來達到你的預期sys.exit磚(0)行為。

在原帖子查看解決方案

拉瑪”id=
新的貢獻者三世

我測試了不同層次的嵌套,它是按預期工作。

這是示例代碼:

進口sys bucket_name = "刺激" # str (sys.argv [1]) .lower () def主要():i, j = 0, 0, j < = 2:印刷(f“while循環迭代:{j}”)範圍(0,3):我的打印(f“循環iteratation:{我}”)如果bucket_name = =“刺激”我和j = = 1 = = 1:打印(“成功。刺激。現有0 ")返回True打印(“回歸”後)剩下的代碼#:#打印(“失敗。DEV。現有1”)# sys.exit(1)打印(f”:而迭代:{j}和迭代:{我}”)繼續打印(如果其他外)+ = 1打印(“內循環”)j + = 1打印(“for循環的終結”)打印(“while循環的終結”)if __name__ = = " __main__”:主要()

在原帖子查看解決方案

3回複3

AndrewN”id=
新的貢獻者三世”id=
新的貢獻者三世

拉,

我檢查和建議是結構內部代碼以這樣一種方式,它返回從主函數滿足某些條件。我修改你的代碼下麵你所看到的。

# sys.exit(0)等效def main (): bucket_name =“刺激”如果bucket_name = =“刺激”:剩下的代碼返回# if __name__ = =“__main__”:主要()
我跑你的原始代碼和磚的工作顯示失敗。然後我跑了修改後的函數,它返回從主要工作顯示成功了。我相信這是最好的選擇來達到你的預期sys.exit磚(0)行為。

拉瑪”id=
新的貢獻者三世

我測試和簡單的代碼裏麵工作,因為返回語句隻工作功能,將所有代碼轉化為主要功能使它工作。我將測試相同的全麵的代碼,如果工作,那麼我將這個解決方案。

拉瑪”id=
新的貢獻者三世

我測試了不同層次的嵌套,它是按預期工作。

這是示例代碼:

進口sys bucket_name = "刺激" # str (sys.argv [1]) .lower () def主要():i, j = 0, 0, j < = 2:印刷(f“while循環迭代:{j}”)範圍(0,3):我的打印(f“循環iteratation:{我}”)如果bucket_name = =“刺激”我和j = = 1 = = 1:打印(“成功。刺激。現有0 ")返回True打印(“回歸”後)剩下的代碼#:#打印(“失敗。DEV。現有1”)# sys.exit(1)打印(f”:而迭代:{j}和迭代:{我}”)繼續打印(如果其他外)+ = 1打印(“內循環”)j + = 1打印(“for循環的終結”)打印(“while循環的終結”)if __name__ = = " __main__”:主要()

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map