Hive 配置 UDF方式
作者:互联网
这里写自定义目录标题
1.hive udf编写
通过继承hive UDF,UDAF,UDTF类进行覆盖方法,然后实现业务逻辑,进行打包【jar包】,部署
2.hive部署
- 2.1 临时部署
登陆hive cli,然后添加jar
hive (default)> add jar testUDF-0.0.1-SNAPSHOT.jar;
- 2.2 永久部署
- 复制到hive默认附加目录
cd $HIVE_HOME mkdir auxlib cp testUDF-0.0.1-SNAPSHOT.jar auxlib
- 依赖于hiveserver2的永久部署,上传hdfs目录
hdfs dfs -put hdfs://wacai/application/udf/4.0.1/testUDF-0.0.1-SNAPSHOT.jar
- 配置hive-env.sh,对本地模式下的hive访问永久部署
cd $HIVE_HOME vim conf/hive-env.sh export HIVE_AUX_JARS_PATH=/opt/hive/auxJarsPath
- 配置hive-site.xml,对本地模式下的hive访问永久部署
````
cd $HIVE_HOME
vim conf/hive-site.xml
hive.aux.jars.path
file:///home/hiveUDF/Month.jar,file:///home/hiveUDF/OutZ.jar
- 复制到hive默认附加目录
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客户端删除临时注册【
hive (default)> drop temporary function ods.udf_func;
- hive客户端删除永久注册
hive (default)> drop function ods.udf_func;
5.测试
- hive客户端测试/hiveserver2
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
标签:function,注册,配置,jar,hive,udf,Hive,func,UDF 来源: https://blog.csdn.net/dymkkj/article/details/120972491