我想編寫python筆記本的代碼可以運行從磚web ui或氣流。我打算從氣流通過參數通過api使用的工作
notebook_params
。據我所知,這些都可以作為小部件的值。
dbutils.widgets.get
似乎並不接受默認值選項,所以我想我隻能捕獲到一個異常,以防沒有可用的值。在UI的代碼拋出(InputWidgetNotDefined
)沒有工作當我嚐試抓住它:
試一試:test_val = dbutils.widgets.get (“test_name”)除了InputWidgetNotDefined: test_val =“默認值”打印(test_val)
我可以做一個將軍,空的
除了:
將工作但通常是壞實踐做毯子了如果我們能避免它。
試一試:test_val = dbutils.widgets.get (“test_name”)除了:test_val =“默認值”打印(test_val)
所以有一個更精確的異常我能趕上嗎?
我處理這個異常類似:
進口py4j嚐試:價值= dbutils.widgets.get除了py4j.protocol(“參數”)。Py4JJavaError e:打印(e)
如果你仔細觀察堆棧跟蹤,您將看到消息的起源來自一些Java代碼:
/磚/火花/ python / lib / py4j-0.10.9.1-src.zip / py4j /協議。py get_return_value(答案,gateway_client target_id,名字)325如果回答[1]= = REFERENCE_TYPE: - - > 326提高Py4JJavaError(327”時發生一個錯誤調用{0}{1}{2}。\ n”。Py4JJavaError:調用o318.getArgument時發生一個錯誤。:com.databricks.dbutils_v1。InputWidgetNotDefined: No input widget named parameter is defined
“com.databricks.dbutils_v1。InputWidgetNotDefined" appears to be a Java class and the actual Python exception to handle is "Py4JJavaError".