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

統一目錄共享訪問模式——dbutils.notebook.entry_point…getContext()不是白名單

nccodemonkey
新的貢獻者三世

我們切換到統一目錄和試圖確認我們現有的筆記本電腦運行的能力。我已經創建了一個新的共享統一目錄集群,跑筆記本使用新的集群。遇到一個錯誤嚐試執行一個打印語句。使用原始集群的信息顯示,加州大學集群運行時也會顯示信息在一個單一的訪問模式,但不是“共享”

.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不是白名單

有人決定適當的工作對於這個場景嗎?

15日回複15

匿名
不適用

@haiderpasha默罕默德:好吧,讓我給你一些更多的工作個隊伍。請讓我知道這是否有幫助。

錯誤消息表明toJson CommandContext類的()方法並不是白名單用於共享統一編目模式。這可能是由於對共享環境的安全限製。為了解決這個問題,你可以嚐試用不同的方式訪問上下文信息。而不是使用

toJson(),你可以試著從上下文對象直接訪問相關信息。例如,如果你想訪問筆記本ID,您可以嚐試以下代碼:

.getContext .notebook print (dbutils.entry_point.getDbutils () () () .notebookId () . get ())

這段代碼應該返回當前筆記本的ID。你可以換

notebookId()與其他方法訪問上下文對象的不同屬性。如果這個方法不起作用,讓更多的選擇。

863141年
新的貢獻者三世

@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作為一個字符串,你可以使用你的目的。

863141年
新的貢獻者三世

.notebook @Suteja卡努裏人我也試著與dbutils.notebook.entry_point.getDbutils () () .getContext () .notebookId不僅notebookId () . get()(),該方法不存在的錯誤。

圖像

匿名
不適用

@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)

讓我知道如果這可以幫助!

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

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

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

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

Baidu
map