嗨@vonjack,對不起,根據提供的信息,沒有一個直接的方式刷新一個臨時函數的類在磚沒有重啟的上下文。
磚不支持更新jar,包括替換默認庫jar和另一個版本,但這通常涉及一個重新啟動集群的更改生效。
源概述了這一過程:“替換默認庫jar”。
你正在經曆的問題是可能是因為一旦JVM裝載一個類時,它不能被卸載或重新加載的類加載器加載除非它是垃圾收集。
在磚,火花上下文使用一個類加載器的整個過程的生命周期,因此,類不刷新,直到上下文是重新啟動。
如果我不想重新啟動集群,你認為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’,哪個版本的類將火花集群使用最終沒有重啟嗎?