hive自定义创建临时函数和永久函数以及遇到的问题

一 创建临时函数

1、先要编写代码继承hive提供的类,并实现抽象方法后打包备用:

org.apache.hadoop.hive.ql.udf.generic.GenericUDF  

org.apache.hadoop.hive.ql.udf.generic.GenericUDTF;

2、在hive命令行窗口创建函数

①添加jar依赖

add jar linux_jar_path;

②创建临时函数

create temporary function [dbname.]function_name AS class_name;

注意:临时函数只在当前会话窗口有效,关闭窗口或在另一个窗口临时函数都不会存在,在当前窗口内时可以在任意数据库中调用该临时函数

③删除临时函数(关闭当前会话窗口后会自动删除)

drop temporary function [if exists] [dbname.]function_name;

二 创建永久函数

与临时函数创建过程一样,在创建永久函数时,不加temporary

create function [dbname.]function_name AS class_name;

注意:创建永久函数如果不在函数名前指定数据库,则默认是当前数据库.函数名

此时在当前会话窗口能正常查到和运行,但是当在另一个窗口调用该函数时发现调用失败

原因:

add jar linux_jar_path;

用这个添加jar依赖是临时的,只在添加的会话窗口生效,如果要在另一个窗口调用该永久函数,需要重新再该窗口再一次引用该jar包依赖,不是很方便且过于繁杂

可以在创建永久函数时:

create function [dbname.]function_name AS class_name using jar hdfs_jar_path;

using此时就是永久生效的,但是此时需要的是在hdfs上的路径,所以需要将jar包放置在hdfs存储路径下才行,不然会报错。

还可以在hive目录下创建一个目录auxlib,将jar包放进去,并重启hive,这样就可以直接创建函数使用

mkdir auxlib
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值