公司大數(shù)據(jù)開發(fā)使用的是阿里云的 MaxCompute,MaxCompute 自身提供了很多 Hive SQL 函數(shù),能夠滿足大部分需求,但是總有一些 Hive SQL 函數(shù)無法滿足的需求,比如 base64 編解碼等等,目前 MaxCompute 內部是沒有相關函數(shù)的。解決辦法是用戶自定義函數(shù),MaxCompute 提供了相關的文檔,具體可以看 這里。
本篇文章主要記錄使用 Java 來自定義函數(shù)。
1. IDEA 里新建項目
在 IDEA 里新建一個項目,并創(chuàng)建一個 class 文件,命名為 data_mask。
2. 添加 odps 依賴
在 pom 文件添加 odps 依賴:
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-sdk-udf</artifactId>
<version>0.29.10-public</version>
</dependency>
3. 編寫代碼
在類文件里編寫代碼(data_mask 要繼承自 阿里云的 UDF):
package com.example.data_mask;
// 阿里云 UDF
import com.aliyun.odps.udf.UDF;
public class data_mask extends UDF {
// 創(chuàng)建 evaluate 方法,與 HIVE 一樣,MaxCompute 的 UDF 通常使用 evaluate 方法
public String evaluate(String string) {
return string + "UDF";
}
}
4.導出 JAR 包
此時 Java UDF 函數(shù)已自定義完畢,接著需要在 MaxCompute 的資源函數(shù)里添加 JAR 包。
5. 新建資源
在 MaxCompute 里新建資源,并把剛剛導出的 JAR 包導入。

6. 注冊函數(shù)
在 MaxCompute 里注冊函數(shù),類名里面填寫 package 以及類名,資源列表里填寫剛剛導入的 JAR 包名稱。

7.提交發(fā)布
將剛剛創(chuàng)建的資源和函數(shù)都提交,并發(fā)布。

發(fā)布成功之后就可以直接調用了,直接根據(jù)定義的函數(shù)名稱調用即可:

參考: