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

如何卸載一個Jar UDF沒有重啟引發上下文?

vonjack
新的因素

scala的筆記本的磚,我創建了一個臨時函數與某些Jar和類名。

然後我想更新Jar。但是沒有重新啟動的背景下,我不能重載新的Jar,臨時函數總是重用舊的類。

我注意到正常功能,它支持刷新,而臨時函數不存在。

有人知道怎麼去解決這個問題嗎?

1接受解決方案

接受的解決方案

Kaniz
社區經理
社區經理

@vonjack,對不起,根據提供的信息,沒有一個直接的方式刷新一個臨時函數的類在磚沒有重啟的上下文。

磚不支持更新jar,包括替換默認庫jar和另一個版本,但這通常涉及一個重新啟動集群的更改生效。

源概述了這一過程:“替換默認庫jar”。

你正在經曆的問題是可能是因為一旦JVM裝載一個類時,它不能被卸載或重新加載的類加載器加載除非它是垃圾收集。

在磚,火花上下文使用一個類加載器的整個過程的生命周期,因此,類不刷新,直到上下文是重新啟動。

在原帖子查看解決方案

3回複3

你好,我試著更新Jar、刪除和重建臨時函數,UDF仍然使用舊的Jar。

我不想重新啟動上下文和清理工作空間,還有其他更好的解決方案嗎?

Kaniz
社區經理
社區經理

@vonjack,對不起,根據提供的信息,沒有一個直接的方式刷新一個臨時函數的類在磚沒有重啟的上下文。

磚不支持更新jar,包括替換默認庫jar和另一個版本,但這通常涉及一個重新啟動集群的更改生效。

源概述了這一過程:“替換默認庫jar”。

你正在經曆的問題是可能是因為一旦JVM裝載一個類時,它不能被卸載或重新加載的類加載器加載除非它是垃圾收集。

在磚,火花上下文使用一個類加載器的整個過程的生命周期,因此,類不刷新,直到上下文是重新啟動。

vonjack
新的因素

如果我不想重新啟動集群,你認為versionized jar名稱和類名稱將是一個更好的解決方案嗎?

起初,我用這個命令創建原始UDF:

創建或替換臨時函數test_udf com . example。”TestUDF_v1使用jar / tmp / test_udf_v1.jar”;

然後我想更新UDF,我會:

創建或替換臨時函數test_udf com . example。”TestUDF_v2使用jar / tmp / test_udf_v2.jar”;

但這可能是另一個問題,如果不同的罐子有相同的類名像com . example。”SameClass’,哪個版本的類將火花集群使用最終沒有重啟嗎?

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

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

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

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

Baidu
map