我們切換到統一目錄和試圖確認我們現有的筆記本電腦運行的能力。我已經創建了一個新的共享統一目錄集群,跑筆記本使用新的集群。遇到一個錯誤嚐試執行一個打印語句。使用原始集群的信息顯示,加州大學集群運行時也會顯示信息在一個單一的訪問模式,但不是“共享”
.getContext .notebook print (dbutils.notebook.entry_point.getDbutils () () () .toJson ())
錯誤返回:
py4j.security。公共. lang Py4JSecurityException:方法。字符串com.databricks.backend.common.rpc.CommandContext.toJson()類類com.databricks.backend.common.rpc.CommandContext不是白名單
有人決定適當的工作對於這個場景嗎?
@haiderpasha默罕默德:好吧,讓我給你一些更多的工作個隊伍。請讓我知道這是否有幫助。
錯誤消息表明toJson CommandContext類的()方法並不是白名單用於共享統一編目模式。這可能是由於對共享環境的安全限製。為了解決這個問題,你可以嚐試用不同的方式訪問上下文信息。而不是使用
toJson(),你可以試著從上下文對象直接訪問相關信息。例如,如果你想訪問筆記本ID,您可以嚐試以下代碼:
.getContext .notebook print (dbutils.entry_point.getDbutils () () () .notebookId () . get ())
這段代碼應該返回當前筆記本的ID。你可以換
notebookId()與其他方法訪問上下文對象的不同屬性。如果這個方法不起作用,讓更多的選擇。
@Suteja卡努裏人
notebookID方法不存在。
Py4JError:調用o709.notebookId時發生一個錯誤。跟蹤:
py4j。Py4JException:方法notebookId([])並不存在。
我試著currentRunId()和沒有使用toJson()方法,但沒有成功。
Py4JError:調用o709.currentRunId時發生一個錯誤。跟蹤:
py4j.security。scala Py4JSecurityException:方法公開。選擇com.databricks.backend.common.rpc.CommandContext.currentRunId()類類com.databricks.backend.common.rpc.CommandContext不是白名單
@haiderpasha默罕默德:你能請檢查以下試。
作為一個解決方案,你可以嚐試使用dbutils.notebook.entry_point.getDbutils () .notebook () .getContext () .notebookId()方法,而不是notebookId([])方法。該方法返回當前筆記本ID作為一個字符串,你可以使用你的目的。
類似地,您可以嚐試使用dbutils.notebook.entry_point.getDbutils () .notebook () .getContext () .currentRunId () . get()方法,而不是currentRunId()方法。該方法返回當前運行ID作為一個字符串,你可以使用你的目的。
@haiderpasha穆罕默德:
我明白了。在這種情況下,這是可能的,getContext()方法中不存在磚運行時共享統一的版本目錄集群上運行。
一種解決方法你可以試試是而不是使用REST API來獲得筆記本ID。這可以通過發送一個HTTP get請求到以下端點:
https:// < databricks-instance > / api / 2.0 / workspace / ?路徑= < notebook-path >;
用你的URL替換< databricks-instance >磚,和
< notebook-path >通往你的筆記本,包括筆記本名稱和擴展。來自這個端點的響應將包含一個notebook_id與筆記本的ID字段。你可以從JSON響應中提取這個ID,在您的代碼中使用它。這裏有一個例子如何使這個請求在Python中:
進口進口json請求#你的筆記本設置端點URL和路徑端點= " https:// < databricks-instance > / api / 2.0 / workspace /獲得“notebook_path = " /路徑/ /筆記本”#設置請求參數params ={“路徑”:notebook_path} # =發送get請求響應請求。get(端點,params = params) #從響應中提取筆記本ID response_json = json.loads (response.content) notebook_id = response_json (“object_id”) #打印筆記本ID打印(notebook_id)
讓我知道如果這可以幫助!