一. UDF(user defined function)
意义
函数扩展得到解决,极大丰富了可定制化的业务需求。
实现步骤(Java创建自定义UDF类)
自定义一个java类
继承UDF类
约定俗成的重写evaluate方法
打包类所在项目成一个all-in-one的jar包并上传到hive所在机器
在hive中执行add jar操作,将jar加载到classpath中。
在hive中创建模板函数,使得后边可以使用该函数名称调用实际的udf函数
hive sql中像调用系统函数一样使用udf函数
代码编写
package com.hive.udf;
import org.apache.hadoop.hive.ql.exec.UDF;
/*
* 功能:实现当输入字符串超过2个字符的时候,多余的字符以"..."来表示。
* 输入/输出:* 如“12”则返回“12”,如“123”返回“12..."
*/
public class ValueMaskUDF extends UDF{
public String evaluate(String input,int maxSaveStringLength,String replaceSign) {
if(input.length()<=maxSaveStringLength){
return input;
}
return input.substring(0,maxSaveStringLength)+replaceSign;
}
public static void main(String[] args) {
System.out.println(new ValueMaskUDF().evaluate("河北省",2,"..."));
步骤部署
maven
<project xmlns="http://maven.apache.org/POM/4.0.0"; xmln