我有一個主人安排筆記本運行幾個不同的筆記本使用dbutils.notebook.run()函數。偶爾,這些孩子的筆記本會失敗(由於API連接等等)。我的問題是,當我試圖捕捉錯誤:
試題:dbutils.notebook.run (notebook_path timeout_seconds = 0)除了異常e:打印(e)
錯誤總是相同的筆記本/故障點:
調用o8701._run時發生一個錯誤。\ n: com.databricks。WorkflowException: com.databricks。NotebookExecutionException: \ n \乙com.databricks.workflow.WorkflowDriver.run失敗(WorkflowDriver.scala: 98) \ n \乙com.databricks.dbutils_v1.impl.NotebookUtilsImpl.run (NotebookUtilsImpl.scala: 134) \ n \乙com.databricks.dbutils_v1.impl.NotebookUtilsImpl._run (NotebookUtilsImpl.scala: 96) \ n \乙sun.reflect.NativeMethodAccessorImpl。在voke0(Native Method)\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.lang.reflect.Method.invoke(Method.java:498)\n\tat py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)\n\tat py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:380)\n\tat py4j.Gateway.invoke(Gateway.java:295)\n\tat py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)\n\tat py4j.commands.CallCommand.execute(CallCommand.java:79)\n\tat py4j.GatewayConnection.run(GatewayConnection.java:251)\n\tat java.lang.Thread.run(Thread.java:748)\nCaused by: com.databricks.NotebookExecutionException: FAILED\n\tat com.databricks.workflow.WorkflowDriver.run0(WorkflowDriver.scala:146)\n\tat com.databricks.workflow.WorkflowDriver.run(WorkflowDriver.scala:93)\n\t... 13 more\n
這將是有用的捕獲實際的錯誤發生在筆記本上,而不是一個隻是表明它失敗了。
我明白我可以捕獲任何異常和傳播他們使用dbutils.notebook.exit()函數,但我寧願沒有try-except包裝每一個潛在的問題。
有沒有更好的方法來捕獲的錯誤發生在一個孩子的筆記本嗎?
不幸的是,我們沒能解決這個問題。似乎我們手動點擊筆記本,或者專門編寫代碼每次我們想要堅持一個錯誤。有一個地方我可以做一個功能要求?將是非常有益的,如果在筆記本使用dbutils磚支持捕獲特定的錯誤,而不是僅僅把占位符WorkflowException。