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,,, ');