我有以下命令運行在我的磚筆記本。
spark.conf.get (“spark.databricks.clusterUsageTags.managedResourceGroup”)
我有包裹這個命令成一個函數(簡化)。
def get_info():返回spark.conf.get (“spark.databricks.clusterUsageTags.managedResourceGroup”)
我已經添加這個函數在. py模塊,我作為一個私人包安裝在我的工作環境。我能導入這個功能和調用它。
然而,當我運行這個函數,我收到一條錯誤消息。
get_info () > > > NameError:名字“火花”沒有定義
如果我定義相同的函數體內的筆記本,沒有問題,我可以運行它。
——為什麼把這個函數到一個單獨的模塊迫使我進口火花?什麼是正確的方法來創建一個單獨的模塊與火花功能?如何導入它們?
——如果可能的話,正在發生的事情在引擎蓋下,使其工作當我在筆記本中定義的函數,而不是工作當我導入它嗎?
你正在經曆的行為是如何相關火花
對象範圍和可用在磚在不同的上下文中。當你定義和運行代碼直接在磚筆記本,火花
對象是自動獲得,允許您訪問火花配置和功能沒有任何額外的步驟。然而,當您定義外部模塊中的函數和導入,的範圍火花
對象的變化,從而導致“NameError:名字“火花”沒有定義”問題。
這是為什麼發生這種情況,以及如何正確地創建一個單獨的模塊與火花功能:
範圍和背景:
火花
對象是自動在全球範圍。當你在筆記本上定義一個函數本身,它可以直接訪問火花
對象,因為它是定義在相同的筆記本上下文。火花
對象。這就是為什麼你遇到“NameError”功能導入並執行。正確的方法:
火花
對象作為參數的函數模塊。這種方式,知道在哪裏可以找到功能模塊火花
對象。