按网上很多一致的说法步骤如下:
添加函数自定义方法文件$HIVE_HOME/src/ql/src/java/org/apache/hadoop/hive/ql/udf/UDAFFunction.java
修改$HIVE_HOME/src/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java文件
import org.apache.hadoop.hive.ql.udf.UDAFFunction;
registerUDF(“method”, UDAFFunction.class,false)或是registerGenericUDAF(“method”,new UDAFFunction());
都未能成功。show functions并没有。如果使用临时注册函数方法可以使用。
我的实现的UDAF函数是直接下载hive的udaf的一些内置函数源码修改的。
注:由于是刚接触hive,所以有些疑问。发现这里面并没有class文件,重启hive会自动编译生成吗。还是需要导入jar包,但是手动导入jar包后,也不能用。求哪位成功加入的大神解答。
2 个解决方案
临时加载:
1.首先添加jar包。hive> ADD JAR /dir/dir/*****.jar;
2.创建函数hive> CREATE TEMPORARY FUNCTION myfunction AS 'com.example.MyFunction';
永久加载:
在.hiverc文件中添加相关语句
重新编译下hive源码的QL包
新增org.apache.hadoop.hive.ql.udf.yourClass