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
      
      

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
上一篇:Hive 自定义函数


下一篇:COMSOL Multiphysics多物理场仿真与ANSYS-Fluent激光加工、熔覆过程,多种案例一定有你想要的