Hive、Impala自定义函数(UDF)创建临时函数和永久函数

 注意:
临时函数和永久函数的区别: 临时函数仅对当前session(黑窗口)有效。 永久函数是全局的。 

hive创建临时函数 


临时函数仅对当前session(黑窗口)有效。
  添加jar包的两种方法
     方法一: add jar /home/hadoop/lib/hive-1.0-SNAPSHOT.jar;
     方法二: 在hive的文件夹下面创建auxlib文件夹,将jar包上传到auxlib文件夹下面,重启hive。

语法:CREATE TEMPORARY FUNCTION function_name AS class_name;  
                    function_name函数名   
                    class_name 类路径,包名+类名
示例:
 -- 创建sayhello函数
create temporary function sayhello as 'com.ruozedata.bigdata.HelloUDF';


-- 查看函数列表
 show functions like '*sayhello*';



-- 测试使用函数
     select sayhello('zhang','san') from tableName ;



删除临时函数
   语法:DROP TEMPORARY FUNCTION [IF EXISTS] function_name;
示例:
 DROP TEMPORARY FUNCTION IF EXISTS sayhello;
         

 Hive创建永久函数 

 创建永久函数 
    创建永久函数的语法:
            CREATE FUNCTION [db_name.]function_name AS class_name
            [USING JAR|FILE|ARCHIVE 'file_uri' [, JAR|FILE|ARCHIVE 'file_uri'] ];
            file_uri:是hdfs上的jar包目录
      添加jar包的两种方法
-- hdfs上的根目录下创建lib文件夹 
hadoop fs -mkdir /lib 



-- 将jar包上传到hdfs上的/lib 文件夹下
hadoop fs -put /home/hadoop/lib/hive-1.0-SNAPSHOT.jar /lib/



 -- 查看jar
 hadoop fs -lsr /lib



 创建永久函数: 
CREATE FUNCTION sayhello AS 'com.ruozedata.bigdata.HelloUDF' USING JAR 'hdfs://hadoop002:9000/lib/hive-1.0-SNAPSHOT.jar';


 -- 查看函数列表 
          show functions like '*sayhello*';
           
       default.sayhello函数创建成功。永久函数是已:库名.函数名的存在,同库使用的时候可以直接用函数名,不同库使用的时候需要带上库名


 -- 测试函数
 select sayhello("ruozedata") from dual ;

Impala创建持久化和非持久函数

impala udf java 函数使用
--创建函数(persistent 两种不能同时存在)
--非持久化
create function xxdb.null2num(string,int) returns string location '/user/mi/Null2Num.jar' symbol='org.ydd.hivetest.Null2Num';
--持久化
create function xxdb.null2num location '/user/mi/Null2Num.jar' symbol='org.ydd.hivetest.Null2Num';

--查询
select xxdb.null2num(c1, 10),count(1)
from xxdb.xxtbl
group by xxdb.null2num(c1, 10)

--删除函数
drop function xxdb.null2num(STRING,int)

--查询函数
use xxdb;
show functions;

-- 刷新元数据
refresh functions xxdb

 参考:Hive 自定义函数(UDF)一 创建临时函数和永久函数_ITPUB博客

https://www.csdn.net/tags/OtTacgysNDcyNC1ibG9n.html 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值