在hive中添加udf较为简单,没遇到什么麻烦,但是在impala中添加udf有时候会报错,找不到类,class not found等。
一、class not found解决办法:
将所缺类的jar包放到impala的lib目录下,如果是cloudera管理的,通常为:
/opt/cloudera/parcels/CDH/lib/impala/lib/
然后还需要重启impala新放入的jar包才会生效。
二、重启Impala后,udf会失效,function消失,是因为创建udf的时候使用的是创建临时udf的方法,所以重启后会失效。
--创建临时udf(重启后function消失)
create function if not exists phoneencode2(String) returns String
location "hdfs:///user/caixvkun/jinitaimei.jar"
SYMBOL="com.cxk.decode";
--创建永久udf(重启后function不消失)
create function if not exists phoneencode2
location "hdfs:///user/caixvkun/jinitaimei.jar"
SYMBOL="com.cxk.decode";