首先,需要编写自定义函数代码,本示例使用Java实现。
package test;
import org.apache.hadoop.hive.ql.exec.UDF;
public class myUDF extends UDF {
public int evaluate(String input){
return input.length();
}
}
使用IDEA将代码打包上传到Linux,再上传到hdfs。
上传到虚拟机步骤不再演示,上传完后使用put命令上传到HDFS
hadoop fs -put 本地文件 hdfs文件路径
然后开启jar包的读写权限
hadoop fs -chmod 777 /myUDF/spark-core-1.0-SNAPSHOT.jar
开启hadoop,hive,通过以下语句创建永久性函数。
create function my_length as 'test.myUDF' using jar 'hdfs://node1:9000/myUDF/spark-core-1.0-SNAPSHOT.jar';
注意,输入正确的包名,文件名,my_length自定义一个函数名,不要加括号。
接下来,测试UDF函数是否能够正常使用。
hive官网udf链接