查询hive中有哪些自定义函数

 我来答
静微微11
2016-08-09 · 超过14用户采纳过TA的回答
知道答主
回答量:34
采纳率:100%
帮助的人:20.6万
展开全部
如何在HIVE中使用自己定义的函数,可以有几种方式:
1.在HIVE会话中add 自定义函数的jar文件,然后创建function,继而使用函数
2.在进入HIVE会话之前先自动执行创建function,不用用户手工创建
3.把自定义的函数写到系统函数中,使之成为HIVE的一个默认函数,这样就不需要create temporary function
--------------------------------------------------------------------------------
1.在HIVE会话中add 自定义函数的jar文件,然后创建function,继而使用函数
hive> ADD JAR /home/hugh.wangp/UDFMd5.jar;
Added /home/hugh.wangp/UDFMd5.jar to class path
hive> CREATE TEMPORARY FUNCTION udfmd5 AS 'udf.UDFMd5';
OK
Time taken: 0.014 seconds
hive> select udfmd5('a') from dual;
OK
0cc175b9c0f1b6a831c399e269772661
这种方式的弊端是:每次打开新的会话,就要重新执行一遍如上的add jar和create temporary function的命令。对普通的业务分析人员未免要求太高。第二种方法可以把业务人员释放出来
--------------------------------------------------------------------------------
2.在进入HIVE会话之前先自动执行创建function
HIVE命令有个参数-i:在进入会话,待用户输入自己的HQL之前,先执行-i的参数。我们只需要把add jar和create temporary function的命令写到一个文件中,并把这个文件传到-i的参数,如此一来省去了每次要手工创建的工作。
但是这种方式也有个弊端,当我增添HIVE的gateway,就要拷贝一份这个文件,有时候遗漏真是不可避免的。第三种方法应该就是一个终极方案,只要HIVE本身代码不做修改,或者不删除特定的功能,这个函数就能一直用,而且可以把他作为HIVE的默认函数那样使用
--------------------------------------------------------------------------------
3.把自定义的函数写到系统函数中,使之成为HIVE的一个默认函数
a.编写自己的UDF/UDAF/UDTF,并把代码放到$HIVE_HOME/src/ql/src/java/org/apache/Hadoop/hive/ql/udf/路径下
b.修改$HIVE_HOME/src/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java
以HIVE自带函数Trim()举例,自定义函数操作一样。
第一步:
写UDF代码UDFTrim.java并放到$HIVE_HOME/src/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTrim.java
第二步:
修改$HIVE_HOME/src/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java文件
a.import org.apache.hadoop.hive.ql.udf.UDFTrim;
b.registerUDF("trim", UDFTrim.class, false);
虽然这种方法是一劳永逸的方法,但是一旦错了,对整个HIVE使用都是灾难性的,所以不是特别通用的自定义函数还是采用前两种,一旦通用的自定义函数累计到一定程度,再去采用第三种方法。

更多相关内容可参考http://www.viiboo.cn
匿名用户
2016-11-11
展开全部
进入到hive中后,使用show functions命令,可以查看hive中可用的函数;
使用命令:describe function 函数名,可以查看函数的详细描述。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式