在SQL作業中使用自訂函數,需要先註冊自訂函數(UDF)。本文為您介紹如何註冊、更新和刪除自訂函數。
注意事項
-
當RAM使用者或RAM角色等其他身份需要進行管理自訂函數(UDF)等相關操作時,請確保其具有目標專案空間的存取權限,詳情請參見開發控制台授權。
-
為了避免JAR包依賴衝突,在開發自訂函數時您需要注意以下幾點:
-
作業開發頁面選擇的Flink版本,請和Pom依賴中的Flink版本保持一致。
-
Flink相關依賴,scope請使用provided,即在依賴中添加
<scope>provided</scope>。 -
其他第三方依賴請採用Shade方式打包,Shade打包詳情請參見Apache Maven Shade Plugin。
說明Flink依賴衝突問題,詳情請參見如何解決Flink依賴衝突問題?。
-
註冊UDF
全域自訂函數
-
進入自訂函數註冊入口
-
單擊目標工作空間操作列下的控制台。
-
單擊。
-
單擊左側的函數頁簽。
-
單擊註冊UDF。
-
上傳UDF JAR檔案。
您可以通過以下任何一種方式上傳UDF JAR檔案:
-
上傳檔案:單擊選擇檔案項右側的選擇檔案後,選擇您的目標UDF Artifact檔案。如果有依賴檔案,單擊依賴檔案項右側的選擇檔案,選擇您的目標UDF Artifact所依賴的檔案。
說明-
您的UDF檔案會被上傳到您選擇的OSS Bucket中的sql-artifacts目錄下。
-
對於Java類型的UDF,其依賴可以打包到UDF JAR包中,也可以通過依賴檔案項進行上傳;對於Python類型的UDF,其依賴推薦通過的單獨上傳依賴檔案方式上傳。
-
-
外部URL:當需要使用其他服務上存在的UDF檔案時,可以使用外部URL功能擷取UDF檔案。
說明僅支援以下兩類外部URL:
開通Flink工作空間時選擇的OSS Bucket地址。您可以在Realtime Compute管理主控台目標工作空間詳情中查看綁定的OSS Bucket。
Realtime ComputeFlink版可以訪問且被允許訪問(公用讀取或被授予許可權)的其他外部儲存系統地址。
-
-
單擊確定。
-
在可用函數頁面,選擇需要註冊的UDF後,單擊建立函數。
Flink開發控制台會解析自訂函數檔案中是否使用了Flink UDF、UDAF和UDTF介面的類,並自動提取類名,填充到Function Name欄位中。註冊成功後,您可以在左側函數列表看到所有註冊成功的UDF,註冊成功的UDF左側會有黃色字型的fx標識。
說明全域自訂函數(Catalog Function)在註冊時,預設使用最新的Flink版本解析。如果您在作業中使用全域自訂函數,同時在作業中選中了非最新的Flink版本,則有可能出現不相容的問題。此時,您可以根據作業需要使用的引擎版本來實現UDF代碼,並通過作業級自訂函數的方式解決此問題。詳情請參見作業級自訂函數。
作業級自訂函數
-
僅VVR 8.0.3及以上版本支援註冊作業級Python自訂函數。
-
當使用作業級Python自訂函數時,可以在作業運行參數配置中,通過python.files或者python.archives等參數配置相關依賴檔案。
-
當使用作業級Python自訂函數時,不支援深度檢查,需要在作業部署時,跳過深度檢查。
作業級自訂函數的註冊流程如下:
-
上傳自訂函數JAR或Python包。
在左側導覽列檔案管理中,上傳自訂函數JAR或Python包。
-
在作業中指定作業級自訂函數。
在作業的附加依賴檔案中,指定自訂函數JAR或Python包。
-
註冊作業級自訂函數。
-
JAVA自訂函數
CREATE TEMPORARY FUNCTION yourfunctionname; -
Python自訂函數
CREATE TEMPORARY FUNCTION yourfunctionname LANGUAGE Python;
-
更新UDF
如果您的UDF JAR檔案中,新增了UDF或登入了UDF的代碼變更,您可以按照以下步驟更新UDF JAR檔案。
-
進入自訂函數註冊入口
-
單擊目標工作空間操作列下的控制台。
-
單擊。
-
單擊左側的函數頁簽。
-
在函數列表中,滑鼠移至上方在目標UDF名稱上,單擊
。 -
上傳UDF JAR檔案。在更新 UDF JAR對話方塊中,選擇上傳檔案或外部 URL方式上傳 UDF,設定選擇檔案和依賴檔案,單擊修改。
重要-
您上傳的新UDF JAR檔案中,必須包含當前已經註冊UDF的所有類,不能出現某個登入UDF的類消失的情況。
-
只有重啟作業或提交新作業時,才會使用新UDF JAR檔案中的代碼。如果引用該UDF JAR的作業正在運行,則依然會使用舊UDF JAR檔案。
-
-
單擊修改。
刪除UDF
在刪除UDF JAR檔案前,請確定其註冊的UDF沒有被作業或SQL檔案引用。
如果您的UDF JAR檔案不再使用,您可以按照以下步驟刪除UDF。
-
進入自訂函數註冊入口
-
單擊目標工作空間操作列下的控制台。
-
單擊。
-
單擊左側的函數頁簽。
-
在函數列表中,滑鼠移至上方在目標UDF名稱上,單擊
表徵圖。 -
選中刪除以上所有函數並且刪除關聯的檔案。
如果您要刪除該UDF JAR檔案,則需要刪除該UDF JAR中所有註冊的UDF,避免有髒資料殘留。
-
單擊確定。
相關文檔
-
JAR自訂函數的分類、參數傳遞及使用方法及demo,詳情請參見Java和自訂彙總函式(UDAF)。
-
Python自訂函數的分類、依賴使用、調試、調優和使用方法及demo等資訊,請參見Python和自訂彙總函式(UDAF)。