為了滿足復雜的數據開發場景,Dataphin智能研發版支持自定義Java UDF函數。本教程以Java自帶函數(toLowerCase)為例,為您介紹如何基于Dataphin自定義Java UDF函數。
前提條件
已下載JAR包。
背景信息
本教程基于下載的JAR包自定義的Java UDF函數,實現大寫字母轉換為小寫字母。您也可以編寫Java UDF代碼,以實現更多的功能,請參見IntelliJ IDEA Java UDF開發最佳實踐。
MaxCompute計算類型下若需跨項目引用自定義函數(UDF),即在一個項目引用另外一個項目的UDF,可以使用project_name:function_name
。例如在項目test_dev下有自定義函數 to_normal,則在項目xyz_dev下可以通過test_dev:to_normal
來使用該函數。
本教程中的JAR包的代碼如下。
package org.alidata.odps.udf.examples;
import com.aliyun.odps.udf.UDF;
public final class javaudf extends UDF {
public String evaluate(String s) {
if (s == null) {
return null;
}
return s.toLowerCase();
}
}
其中:
JAR包路徑為org.alidata.odps.udf.examples。
class文件名為javaudf。
步驟一:上傳JAR包
登錄Dataphin控制臺。
在Dataphin控制臺頁面,選擇工作區地域后,單擊進入Dataphin>>。
進入資源管理頁面。
在Dataphin首頁的頂部菜單欄中,選擇研發 > 數據研發。
在左側導航欄中,選擇數據處理 > 資源。
在資源列表上方,單擊圖標。
在新建資源對話框中,配置以下參數。
參數
描述
類型
選擇jar。
名稱
上傳文件的名稱需要以文件類型結尾。例如javaudf.jar。
描述
填寫資源的描述。
上傳文件
選擇本地JAR文件,例如javaudf.jar。
計算類型
選擇MaxCompute。
選擇目錄
選擇用于存放JAR包的目錄。系統默認為資源管理,保持默認即可。
單擊提交,完成資源的提交。
在提交備注對話框,填寫備注信息。
單擊確定并提交。
(可選)發布資源至生產環境。
如果您的開發模式是Dev-Prod模式,則需要發布資源至生產環境,詳情請參見管理發布任務。
如果您的開發模式是Basic模式,則提交成功的資源,即可進入生產環境。
步驟二:創建MAXC函數
在開發頁面的左側導航欄中,選擇數據開發 > 函數。
在函數列表上方單擊圖標,選擇MAXC函數。
在新建函數對話框中,配置以下參數。
參數
描述
名稱
填寫函數的名稱,例如Java
選擇資源
選擇已上傳的資源javaudf.jar。
類名
類名的格式為JAR包路徑.class文件名。填寫org.alidata.odps.udf.examples.javaudf。
類型
函數的類型。選擇字符串。
命令格式
定義引用函數的格式。填寫to_char(string i)。
使用文檔
填寫函數的使用描述,例如javaudf。
選擇目錄
默認為MAXC函數-用戶自定義函數,保持默認。
單擊提交,完成資源的提交。
在提交備注對話框,填寫備注信息。
單擊確定并提交。
(可選)發布函數至生產環境。
如果您的開發模式是Dev-Prod模式,則需要發布函數至生產環境,詳情請參見管理發布任務。
如果您的開發模式是Basic模式,則提交成功的函數,即可進入生產環境。
步驟三:新建SQL任務
在開發頁面的左側導航欄中,選擇數據處理 > 計算任務。
在計算任務列表上方單擊圖標,選擇MAX_COMPUTE_SQL。
在新建MAX_COMPUTE_SQL任務對話框中,配置以下參數。
參數
描述
名稱
填寫計算任務的名稱,例如javaudf。
調度類型
選擇任務的調度類型為周期性節點。
選擇目錄
系統自動選擇為計算任務。
使用模板
單擊開關來選擇是否使用模板,若開啟使用模板,則還需選擇模板和模板版本。
描述
填寫對任務的簡單描述。
單擊確定。
步驟四:使用Java UDF函數
在SQL任務的代碼編寫頁面,編寫代碼,例如
select java('ABCGDfagHH');
。單擊代碼編輯區域上方的運行,運行當前代碼并查看運行結果。
(可選)調度運維
如果需要定期的運行SQL任務,則需要配置SQL任務的調度參數并發布至生產環境,參與生產環境的調度。