udf即自定義函數,適用於一般的函數無法滿足當前工作需要或者特定場景需求等所應運而生的工具函數
本文拿漢字匹配來舉例,udf一般可以用python和java來編寫,java用的比較多,對平臺的適應性也更好,但python udf開發難度低
在java IDEA裏進行udf 開發
首先寫好漢字匹配的java腳本,該腳本無需寫main函數,直接寫public函數即可,其他要求以各大數據平臺爲準,腳本如下,注意這裏需要導入hadoop的類,建議用maven建項目
package cn.hhy.udf;
import org.apache.hadoop.hive.ql.exec.UDF;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public final class filterHZ extends UDF {
public String evaluate(String col1){
//匹配漢字
String regex = "([\u4e00-\u9fa5]+)";
String str_hz = "";
//提取漢字
if(col1 != null){
Matcher ma = Pattern.compile(regex).matcher(col1);
while(ma.find()){
str_hz += ma.group(0);
}
}
return str_hz;
}
}
之後打出jar包,如何打jar包
把該jar包上傳到平臺資源管理裏,然後在函數管理裏創建函數,映射該jar包,命名創建完成即可
函數使用:
select getHZ('FHK匹配JS漢字123fds符合東方 *** 飛機的回覆、31 3256323232若峯的算法555555%%%7,,, ');