官网地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
在shell中找版本
[hadoop@hadoop001 bin]$ pwd
/home/hadoop/app/hive-1.1.0-cdh5.7.0/bin
版本要对应上
在idae中添加hive依赖;
<hive.version>1.1.0-cdh5.7.0</hive.version>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>${hive.version}</version>
</dependency>
之后看一下如何开发
package com.ruoze.g5;
//hive自定义UDF
import org.apache.hadoop.hive.ql.exec.UDF;
public class RuozeUDF extends UDF {
public String evaluate(String name){
return "Ruozedata:" + name;
}
public static void main (String[]arge) {
RuozeUDF udf= new RuozeUDF();
System.out.println(udf.evaluate("豆豆"));;
}
}
简单的开发完,要在idea上测试一下
然后进行打包上传
[hadoop@hadoop001 etc]$ hadoop fs -mkdir /lib/
[hadoop@hadoop001 etc]$ hadoop fs -put g5spark1-1.0.jar /lib/
hive (default)> CREATE FUNCTION ruoze_hello AS 'com.ruoze.g5.RuozeUDF'
>
> USING JAR 'hdfs://hadoop001:9000/lib/g5spark1-1.0.jar';
converting to local hdfs://hadoop001:9000/lib/g5spark1-1.0.jar
Added [/tmp/fb09b343-d4ab-49e5-a851-9c3c182ed855_resources/g5spark1-1.0.jar] to class path
Added resources: [hdfs://hadoop001:9000/lib/g5spark1-1.0.jar]
OK
Time taken: 0.398 seconds
hive (default)>
结果:
mysql> select * from funcs \G;
*************************** 1. row ***************************
FUNC_ID: 1
CLASS_NAME: com.ruoze.g5.RuozeUDF
CREATE_TIME: 1546951354
DB_ID: 1
FUNC_NAME: ruoze_hello
FUNC_TYPE: 1
OWNER_NAME: NULL
OWNER_TYPE: USER
1 row in set (0.00 sec)
ERROR:
No query specified