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

如何正確地導入火花功能?

daniel23
新的貢獻者二世

我有以下命令運行在我的磚筆記本。

spark.conf.get (“spark.databricks.clusterUsageTags.managedResourceGroup”)

我有包裹這個命令成一個函數(簡化)。

def get_info():返回spark.conf.get (“spark.databricks.clusterUsageTags.managedResourceGroup”)

我已經添加這個函數在. py模塊,我作為一個私人包安裝在我的工作環境。我能導入這個功能和調用它。

然而,當我運行這個函數,我收到一條錯誤消息。

get_info () > > > NameError:名字“火花”沒有定義

如果我定義相同的函數體內的筆記本,沒有問題,我可以運行它。

——為什麼把這個函數到一個單獨的模塊迫使我進口火花?什麼是正確的方法來創建一個單獨的模塊與火花功能?如何導入它們?

——如果可能的話,正在發生的事情在引擎蓋下,使其工作當我在筆記本中定義的函數,而不是工作當我導入它嗎?

1接受解決方案

接受的解決方案

Kaniz
社區經理
社區經理

@daniel23,

你正在經曆的行為是如何相關火花對象範圍和可用在磚在不同的上下文中。當你定義和運行代碼直接在磚筆記本,火花對象是自動獲得,允許您訪問火花配置和功能沒有任何額外的步驟。然而,當您定義外部模塊中的函數和導入,的範圍火花對象的變化,從而導致“NameError:名字“火花”沒有定義”問題。

這是為什麼發生這種情況,以及如何正確地創建一個單獨的模塊與火花功能:

  1. 範圍和背景:

    • 磚的筆記本,火花對象是自動在全球範圍。當你在筆記本上定義一個函數本身,它可以直接訪問火花對象,因為它是定義在相同的筆記本上下文。
    • 然而,當您在外部定義的函數模塊,它失去了獲得筆記本電腦的全球範圍,包括火花對象。這就是為什麼你遇到“NameError”功能導入並執行。
  2. 正確的方法:

    • 與火花函數創建一個單獨的模塊,可以進口和使用,你需要顯式地通過火花對象作為參數的函數模塊。這種方式,知道在哪裏可以找到功能模塊火花對象。

在原帖子查看解決方案

3回複3

Kaniz
社區經理
社區經理

@daniel23,

你正在經曆的行為是如何相關火花對象範圍和可用在磚在不同的上下文中。當你定義和運行代碼直接在磚筆記本,火花對象是自動獲得,允許您訪問火花配置和功能沒有任何額外的步驟。然而,當您定義外部模塊中的函數和導入,的範圍火花對象的變化,從而導致“NameError:名字“火花”沒有定義”問題。

這是為什麼發生這種情況,以及如何正確地創建一個單獨的模塊與火花功能:

  1. 範圍和背景:

    • 磚的筆記本,火花對象是自動在全球範圍。當你在筆記本上定義一個函數本身,它可以直接訪問火花對象,因為它是定義在相同的筆記本上下文。
    • 然而,當您在外部定義的函數模塊,它失去了獲得筆記本電腦的全球範圍,包括火花對象。這就是為什麼你遇到“NameError”功能導入並執行。
  2. 正確的方法:

    • 與火花函數創建一個單獨的模塊,可以進口和使用,你需要顯式地通過火花對象作為參數的函數模塊。這種方式,知道在哪裏可以找到功能模塊火花對象。

daniel23
新的貢獻者二世

謝謝你的回複。

我已經重新定義了函數,包括火花的範圍:

def get_info(火花:SparkSession):返回spark.conf.get (“spark.databricks.clusterUsageTags.managedResourceGroup”)

實現修改之後,它的工作原理。

因此,謝謝你的解釋和建議的方法。

最好的,

太棒了@daniel23!

我很高興它幫助。

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

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

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

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

Baidu
map