参考官网:
https://cwiki.apache.org/confluence/display/Hive/HivePlugins 添加hive UDF函数
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF 可查看hive内置函数
1.UDF分类:
(什么是UDF:User-Defined Function)
1 | UDF: one-to-one row mapping : upper substr |
2.UDF编写步骤:
2.1使用idea创建maven工程,在pom下添加以下依赖:
1 | <properties> |
3.编写 Hive UDF函数:
1)新建一个类,名字为connectUDF.java
1 | 继承UDF类,并重写evaluate方法 |
2)创建第二个类,名字为splitUDF.java
1 | 继承UDF类,并重写evaluate方法 |
4.打包编译生成jar包,注册UDF函数
生成jar包:g6-hadoop-1.0.jar
1)临时生效,即只在当前窗口生效
1 | 首先要先添加 jar,否则会找不到jar包 |
2)永久有效,可以在多hive shell回话窗口使用udf函数
把jar包上传到hdfs,路径如下:
1 | [hadoop@hadoop001 hadoop-2.6.0-cdh5.7.0]$ hadoop fs -put /home/hadoop/lib/g6-hadoop-1.0.jar /date/ |
执行命令:
hive (d6_hive)> CREATE FUNCTION splitUDF AS ‘com.ruozedata.hadoop.UDF.splitUDF’
USING JAR; ‘hdfs://hadoop001:8020/date/g6-hadoop-1.0.jar’
红色部分改成自己的
函数验证:
1 | mysql> select * from funcs \G; |
从元数据中查看函数:
1 | mysql> select * from funcs \G; |