Hive库更新UDF步骤说明

102 篇文章 11 订阅

 

Hive 2.1.1 +cdh6.2.0 库更新UDF步骤说明

 

共有三种更新UDF的方式,整理如下:

名称

是否需要重启hive服务

Jar保存位置

是否支持 Sentry

适用场景

直接JAR配置

需要

Hdfs

不支持

开发场景

辅助JARs目录配置

需要

本地目录

不支持

防止意外覆盖文件的场景

可重载的辅助JAR配置

不需要

本地目录

支持

频繁更改UDF场景

 

选择“直接JAR配置”和“可重载的辅助JAR配置”这两种做详细说明。

两种方法优缺点:

 

直接JAR配置方式设置 Hive CLI 和 Beeline(需重启Hive服务) 均适用,目录位置为hdfs文件系统。

 

可重载的辅助JAR配置方式只对 Beeline 适用,Hive CLI 方式无法识别 Jar 包,优点在于目录位置可以随意指定,使用时需要执行执行 RELOAD 命令(要执行两次)即可加载到新增 Jar 包,不需要重启hive服务。

 

一、直接JAR更新步骤

1.1 删除原函数和jar包(在所有hiveserver节点执行)

--在beeline中执行删除原函数

drop function betUDF;

drop function chkUDF;

--在beeline中执行删除jar包(在所有hiveserver节点执行)

delete jar hdfs:///tmp/hive-function-1.2.3.1.jar;

 

--从hdfs上删除jar包(任一节点执行一次)

export HADOOP_USER_NAME=hive

Hdfs dfs -rm /tmp/hive-function-1.2.3.1.jar

 

1.2 上传新的jar包到hdfs(任一节点执行一次)

--在操作系统中执行

export HADOOP_USER_NAME=hive

Hdfs dfs -put hive-function-1.2.4.jar /tmp/

1.3 注册永久函数(在所有hiveserver节点执行)

--在beeline中执行添加jar包

add jar hdfs:///tmp/hive-function-1.2.4.jar;

--在beeline中执行注册永久函数

create function betUDF as 'com.function.BetUDF' using jar 'hdfs:///tmp/hive-function-1.2.4.jar';

create function chkUDF as 'com.function.ChkUDF' using jar 'hdfs:///tmp/hive-function-1.2.4.jar';

 

--在beeline中查看结果

show functions like '*udf';

 

1.4 重启所有节点的hive server服务,UDF生效。

 

二、可重载的辅助JAR更新步骤

2.1 首次初始化配置

需要预先配置相关参数和创建目录。

在CDH管理界面,hive组件的“hive-site.xml 的 HiveServer2 高级配置代码段(安全阀)”配置项中,添加参数“hive.reloadable.aux.jars.path”,参数值为本地hive server对应的目录,所有实例的目录必须存在并且位置相同,如值为“/usr/local/hive/auxjar”,配置后如下图。

 

Xml格式视图为“<property><name>hive.reloadable.aux.jars.path</name><value>/usr/local/hive/auxjar</value></property>”

在所有服务器节点创建参数值对应的目录“/usr/local/hive/auxjar”,如无此目录,hive服务无法正常启动。

--在操作系统中执行

mkdir -p /usr/local/hive/auxjar

完成以上配置后,重启hive所有服务,配置生效。

 

2.2 更新UDF步骤

2.2.1 删除原UDF(在所有hiveserver节点执行)

--在beeline中执行

drop function betUDF;

drop function chkUDF;

 

2.2.2 所有操作系统节点替换jar包(在所有操作系统节点执行)

删除在操作系统/usr/local/hive/auxjar目录内的旧jar包,上传新的jar包到目录内。

 

2.2.3 执行jar重载命令(在所有hiveserver节点执行)

--在beeline中执行两次重载命令

RELOAD;

RELOAD;

 

2.2.4 注册永久函数(在所有hiveserver节点执行)

--在beeline中注册永久函数

create function betUDF as 'com.function.BetaUDF';

create function chkUDF as 'com.function.ChkUnitrdNavUDF';

 

注:在所有节点注册后,UDF函数立即生效,不用重启hive server服务。

 

--在beeline中查看注册结果

show functions like '*udf';

 

三、注意事项

3.1 在使用的时候,如不指定库名,默认使用default库下的UDF参数,如用指定库下的UDF函数需要指定库名才能使用。

3.2 如果要删除修改函数,务必先删除函数,后删除jar包,否则会报File dose not exist这个错误

 

出现错误后的恢复方法:重新上传与该函数创建时一致的jar包和路径,然后再删除函数,删除jar包。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值