这里写自定义目录标题
1.hive udf编写
通过继承hive UDF,UDAF,UDTF类进行覆盖方法,然后实现业务逻辑,进行打包【jar包】,部署
2.hive部署
登陆hive cli,然后添加jar
hive (default)> add jar testUDF-0.0.1-SNAPSHOT.jar;
3.注册函数
- 临时注册生效,使用本地目录的jar对应的类,可以指定udf的在那个数据库生效,否则就是默认全局
create temporary function ods.udf_func AS 'com.jerry.cn.encrypt.DecryptUDF';
create function ods.udf_func AS 'com.jerry.cn.encrypt.DecryptUDF' using jar 'hdfs://wacai/application/udf/4.0.1/testUDF-0.0.1-SNAPSHOT.jar';
4.删除注册
hive (default)> drop temporary function ods.udf_func;
hive (default)> drop function ods.udf_func;
5.测试
hive (default)> select udf_func("V01_LIwSPjC/N5OIynlmmxg79A==");
OK
_c0
jack
Time taken: 9.93 seconds, Fetched: 1 row(s)
6.错误总结
- 部署udf jar后需要注册【临时,永久udf都需要注册】,否则会无法找到
hive> select udf_func('jac');
FAILED: SemanticException [Error 10011]: Line 1:7 Invalid function 'udf_func'
- 部署后hiveserver2未及时同步hive udf元数据,手动重载
hive (default)> reload function;
OK
Time taken: 0.36 seconds