ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Hive 配置 UDF方式

2021-10-26 15:31:12  阅读:184  来源: 互联网

标签:function 注册 配置 jar hive udf Hive func 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
      
      

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有