栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hive udf上线相关

Hive udf上线相关

简述

本文旨在讲解开发好的hive udf如何上线到服务器并使用,关于如何开发hive udf不在本文讨论范畴内。

创建永久函数

对于长期使用的udf,推荐创建永久函数,这样就不用每次使用函数前都创建临时函数,下面这个命令需要先提前将jar包添加到classpath,关于如何添加jar到classpath查看下一章节。

CREATE FUNCTION [db_name.]function_name AS class_name;

如果没有加到classpath里可以使用命令:

CREATE FUNCTION [db_name.]function_name AS class_name [USING JAR|FILE|ARCHIVE 'file_uri' [, JAR|FILE|ARCHIVE 'file_uri'] ];
添加jar到classpath

使用命令add jar

描述:hive> add jar /home/hadoop/xxxx.jar;,可以用list jars;命令查看是否添加成功,一般在创建临时函数时才会用到该方法。

时效性:临时的。

服务:只针对当前session,重启hive-shell后失效,重启与HiveServer2的链接后失效。

将jar放入hive目录下的auxlib目录或者lib目录下

描述:lib是hive的依赖目录,auxlib目录是hive默认的插件目录(如果没有则手动创建)。

时效性:永久的。

服务:hive-shell重启后生效,HiveServer2重启后生效。

修改hive-env.sh中的HIVE.AUX.JARS.PATH配置

时效性:永久的。

服务:hive-shell重启后生效,HiveServer2重启后生效。

修改和hive-site.xml中的hive.aux.jars.path配置

时效性:永久的。

服务:对hive-shell无效,HiveServer2重启后生效。

更新函数

在实际应用场景里,我们会遇到Hive udf逻辑更新迭代的情况,这时就需要更新udf的jar包,然后让HiveServer2重新加载这个jar包里的类。

经过试验,HiveServer2一旦加载了udf的jar包就不会轻易卸载。

因此一般情况下,我推荐hive udf的jar包不要带上版本号,这样在更新了jar包后,只需要重启HiveServer2就可以,而并不需要删除/重新创建函数。

(至于如何分辨jar包的版本号,可以查看我的另一篇文章)

借助zookeeper实现高可用的HiveServer2如何使用Hive udf

如果使用的HiveServer2借助zookeeper实现了高可用,那么每次与HiveServer2建立链接时,都只是与其中一个HiveServer2通信,如果该HiveServer2已经将目标jar添加到classpath里了,那就可以创建函数。

在一个HiveServer2上添加函数后,另外的HiveServer2节点并不能马上意识到已经创建了函数,使用show functions like '*function_name*';会找不到创建的函数,将该节点重启后才能发现该函数。

尽管HiveServer2重启后能够发现该函数,但如果该HiveServer2节点没有将jar添加到classpath里,那么依然无法使用函数。

因此,在创建函数时,要确保所有的HiveServer2都已经将jar添加到classpath里。

但是,如果按照前面《添加jar到classpath》章节里提到的方式,那么每个HiveServer2节点都需要部署jar包,这样会导致管理不方便,而且版本更新的时候也十分麻烦。

因此对于借助zookeeper实现了高可用的HiveServer2,我更加推荐使用命令CREATE FUNCTION [db_name.]function_name AS class_name USING JAR 'hdfs://file_uri'来创建udf函数,这样在版本更新时,我们就不再需要每一个节点去操作更新jar包,而只需要替换hdfs上的jar包,然后滚动重启每一个HiveServer2即可。

删除函数
DROP FUNCTION [IF EXISTS] function_name;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/746582.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号