我們切換到統一目錄和試圖確認我們現有的筆記本電腦運行的能力。我已經創建了一個新的共享統一目錄集群,跑筆記本使用新的集群。遇到一個錯誤嚐試執行一個打印語句。使用原始集群的信息顯示,加州大學集群運行時也會顯示信息在一個單一的訪問模式,但不是“共享”
.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不是白名單
有人決定適當的工作對於這個場景嗎?
@Donal科文:
它看起來像你遇到的錯誤是在磚Py4J相關安全設置。Py4J磚所使用的是一個通信庫允許Python代碼與Java代碼進行交互。
在共享模式運行時,磚應用更嚴格的安全設置,以防止用戶執行有害代碼。Py4J方法在這種情況下,看來你想調用不允許白名單的方法在共享模式。
為了解決這個問題,你可以試著修改Py4J安全設置允許您需要使用的方法。這可以通過添加py4j.allowed的方法。方法在集群配置屬性的高級配置設置。
一旦你做出了改變,重新啟動集群,嚐試再次運行你的筆記本在共享模式問題是否解決。
@haiderpasha穆罕默德:
這裏有一個例子如何修改Py4J安全設置的火花配置允許您需要使用的方法:
#從pyspark SparkConf導入,導入所需的模塊配置= SparkConf SparkContext #創建一個新的火花配置()# Py4J安全設置設置為允許所需的方法conf.set (“spark.driver。extraJavaOptions”、“-Dpy4j.security.allowed.methods = com.databricks.backend.common.rpc.CommandContext.toJson ") #使用修改後的配置創建一個新的火花上下文sc = SparkContext(參看= conf)
這個例子設置py4j.security.allowed。財產包括toJson方法()方法上
com.databricks.backend.common.rpc.CommandContext類。您可以修改這個屬性包含任何額外Py4J需要使用的方法。
請注意,這些變化隻會影響司機的過程。如果你是火花集群上運行,您將需要確保這些修改應用於所有工作節點。你可以通過設置spark.executor來實現這一點。extraJavaOptions spark.driver屬性相同的值。extraJavaOptions財產。
我希望這可以幫助!讓我知道如果你有任何進一步的問題。