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

掌握筆記本電腦找不到注冊的udf孩子筆記本

andrew0117
貢獻者

主筆記本是調用一個孩子筆記本使用

dbutils.notebook.run (“PathToChildnotebook”)

。孩子筆記本定義一個用戶定義函數(UDF)和注冊使用

spark.udf.register

。然而,當孩子筆記本完成並返回到主筆記本運行,無法找到該UDF和主筆記本遇到錯誤時,它試圖使用UDF嗎?

1接受解決方案

接受的解決方案

匿名
不適用

@andrew李:

UDF的原因不能被發現,當孩子筆記本結束運行時,火花上下文,用於定義和注冊UDF被摧毀。因此,UDF不再可用的火花所使用的上下文掌握筆記本。

為了解決這個問題,您可以定義和寄存器中的UDF主筆記本,或者你可以將UDF作為一個參數傳遞給主筆記本從子筆記本使用dbutils.notebook.exit()函數。

這裏有一個例子如何通過UDF作為參數從子筆記本到主筆記本:

在孩子的筆記本:

def my_udf (x):返回x + 1 spark.udf。注冊(“my_udf my_udf) dbutils.notebook.exit (my_udf)

在主筆記本:

child_udf = dbutils.notebook.run (“PathToChildnotebook timeout_seconds = 600) spark.udf。注冊(“my_udf child_udf)

在這個例子中,定義my_udf UDF和注冊在孩子的筆記本,然後作為一個參數傳遞給dbutils.notebook.exit()函數。主筆記本dbutils.notebook.run()函數調用子筆記本作為字符串並返回UDF。然後注冊UDF的火花上下文掌握筆記本使用spark.udf.register ()。

在原帖子查看解決方案

4回複4

Debayan
尊敬的貢獻者三世
尊敬的貢獻者三世

你好,請讓我們知道錯誤代碼。

另外,請標記@Debayan與你的下一個反應,這樣我將通知。謝謝!

@Debayan慕克吉錯誤代碼是:未定義的功能:my_udf_name。這個函數是建成的/臨時函數和持久性函數作為spark_catalog_.default.my_udf_name合格。

我的理解,dbuils.notebook.run觸發一個單獨的工作,定義和注冊一個函數,但工作崗位上執行相同的集群,所以他們在同一個引發會話,注冊udf與火花會話。為什麼masternote不能調用udf中定義孩子筆記本嗎?

如果我使用魔法命令%運行,它將在執行同樣的工作,masternote書沒有問題叫“十一五udf中定義的孩子的筆記本。

Debayan
尊敬的貢獻者三世
尊敬的貢獻者三世

匿名
不適用

@andrew李:

UDF的原因不能被發現,當孩子筆記本結束運行時,火花上下文,用於定義和注冊UDF被摧毀。因此,UDF不再可用的火花所使用的上下文掌握筆記本。

為了解決這個問題,您可以定義和寄存器中的UDF主筆記本,或者你可以將UDF作為一個參數傳遞給主筆記本從子筆記本使用dbutils.notebook.exit()函數。

這裏有一個例子如何通過UDF作為參數從子筆記本到主筆記本:

在孩子的筆記本:

def my_udf (x):返回x + 1 spark.udf。注冊(“my_udf my_udf) dbutils.notebook.exit (my_udf)

在主筆記本:

child_udf = dbutils.notebook.run (“PathToChildnotebook timeout_seconds = 600) spark.udf。注冊(“my_udf child_udf)

在這個例子中,定義my_udf UDF和注冊在孩子的筆記本,然後作為一個參數傳遞給dbutils.notebook.exit()函數。主筆記本dbutils.notebook.run()函數調用子筆記本作為字符串並返回UDF。然後注冊UDF的火花上下文掌握筆記本使用spark.udf.register ()。

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

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

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

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

Baidu
map