导入依赖包:

hive-exec.jar
hadoop-common.jar

注意:函数名必须为 evaluate ,否则hive无法识别!

package com.example.hive.udf;
import org.apache.hadoop.hive.ql.exec.UDF;public class udfpinyin   extends UDF{public static void main(String[] args) {udfpinyin uy=new udfpinyin();String output=uy.evaluate("stay");System.out.println(output);}public  String evaluate(String str) {try {return "HelloWorld " + str;} catch (Exception e) {return null;}}
}
add jar /home/temp/hivefunc.jar;

//删除jar 包

delete jar /tmp/data/udf-1.0.jar;

CREATE TEMPORARY FUNCTION HelloUDF AS 'com.example.hive.udf.udfpinyin';
CREATE TEMPORARY FUNCTION getpyUDF AS 'com.example.hive.udf.udfpinyin';

 

注册永久函数

先上传jar包到HDFS

hdfs dfs -put  /home/user/hive-functions.jar /user/hive/jars/hive-functions.jar

永久注册函数:
– CREATE FUNCTION 函数名 AS ‘包名.类名’ USING JAR ‘hdfs:///path/xxxx.jar’;

create function default.unis_check as 'com.fhpt.hive.functions.UniversityCheckUDF' using jar 'hdfs:/user/hive/jars/hive-functions-0.0.1.jar';

hive> create function msgloanappsproc as "udf_ltf.MsgLoanAppsProc" using jar 'hdfs:///user/hive/warehouse/extlib/udf-1.0.jar';

查看函数:

hive> show functions;
            OK
            abs
            acos
            add_months
            sayhello

删除永久函数:
– drop function 数据库名.函数名字;

 drop function msgloanappsproc;

注册临时函数

临时注册:
add jar /path/xx.jar(存储在本地磁盘)

// 临时注册UDF函数(hive会话生效)
create temporary function 函数名 as ‘包名.类名’;

删除临时函数:
– drop temporary function 数据库名.函数名;

CDH引用UDF函数

在hive引入自定义的udf函数,下面简单记录下怎么在cm安装的cdh下面引入,一种是函数客户端关闭后就失效了,一种是永久性的,详见下面:

1.临时的:
在如下目录下面创建auxlib

/etc/hive/auxlib

将jar添加到该目录下

然后在cm管理器的hive配置文件里面找到:
添加属性:


/etc/hive/auxlib

在配置文件里面找到:


添加属性:

HIVE_AUX_JARS_PATH=/etc/hive/auxlib

然后在hive客户端创建临时函数

2.永久的:
详见apache:
https://cwiki.apache.org/confluence/display/hive/LanguageManual+DDL#LanguageManualDDL-CreateFunction
将jar包上传到hdfs

hadoop dfs -mkdir /user/hive/udf
hadoop dfs -put udftest.jar /user/hive/udf/

然后创建永久性函数:

CREATE FUNCTION functionname AS 'com.lijie.test.udf.GetId' using jar 'hdfs://master:8020/user/hive/udf/udfte

=====================参考==================================

Hive自定义函数类型

  • UDF(User-Defined-Function) 一进一出
  • UDAF(User- Defined Aggregation Funcation) 聚集函数,多进一出。Count/max/min
  • UDTF(User-Defined Table-Generating Functions) 一进多出,如explode()
    使用方式 :在HIVE会话中add 自定义函数的jar文件,然后创建function继而使用函数

UDF 开发

  1. UDF函数可以直接应用于select语句,对查询结构做格式化处理后,再输出内容
  2. 编写UDF函要注意以下几点:
    a. 自定义UDF需要继承org.apache.hadoop.hive.ql.exec.UDF
    b. 需要实现evaluate函数,evaluate函数支持重载
  3. 步骤
    a. 把程序打包放到目标机器上去;
    b. 进入hive客户端,添加jar包:hive> add jar /run/jar/udf_test.jar;
    c. 创建临时函数:hive> CREATE TEMPORARY FUNCTION add_example AS 'hive.udf.Add';
    d. 销毁临时函数:hive> DROP TEMPORARY FUNCTION add_example;
    e. 查询HQL语句:
SELECT add_example(8, 9) FROM scores;
SELECT add_example(scores.math, scores.art) FROM scores;
SELECT add_example(6, 7, 8, 6.8) FROM scores;

Hive的UDF开发只需要重构UDF类的evaluate函数即可

package com.hrj.hive.udf;
import org.apache.hadoop.hive.ql.exec.UDF;
public class helloUDF extends UDF {public String evaluate(String str) {try {return "HelloWorld " + str;} catch (Exception e) {return null;}}
} 

Hive 自定义函数调用

将该java文件编译成helloudf.jar
hive> add jar helloudf.jar;
hive> create temporary function helloworld as 'com.hrj.hive.udf.helloUDF';
hive> select helloworld(t.col1) from t limit 10;
hive> drop temporary function helloworld;

CDH 创建Hive UDF函数相关推荐

  1. hive UDF函数取最新分区

    hive UDF函数取最新分区 1.pom文件 <dependencies><!-- https://mvnrepository.com/artifact/org.apache.hi ...

  2. hive UDF函数

    虽然Hive提供了很多函数,但是有些还是难以满足我们的需求.因此Hive提供了自定义函数开发 自定义函数包括三种UDF.UADF.UDTF UDF(User-Defined-Function) UDA ...

  3. Impala UDF - Impala调用Hive UDF函数

    Impala 中运行 Hive UDF 场景:部分查询需要快速返回,使用Impala进行快速.复杂的查询 1.简单的UDF函数过滤,判断是否包含"好"字,返回boolean类型 i ...

  4. Hive UDF 函数指南

    精选30+云产品,助力企业轻松上云!>>> 点击蓝色"大数据每日哔哔"关注我 加个"星标",第一时间获取大数据架构,实战经验 Hive 内置了 ...

  5. 编写hive udf函数

    大写转小写 package com.afan; import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.io.Text; ...

  6. hive 解密_hive 中自定义 base64 加密 解密 UDF 函数

    一.maven依赖 org.apache.hadoop hadoop-client 2.7.3 org.apache.hive hive-exec 1.2.1 org.apache.maven.plu ...

  7. 创建hive的AES加密解密函数

    1.写java代码,打jar包 1.pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <pro ...

  8. 【若泽大数据实战第十九天】Hive 函数UDF开发以及永久注册udf函数

    前言: 回顾上期课程,上次课我们讲了聚合函数,多进一出, 分组函数  group by,出现在select里面的字段除了分组函数之外,其他都要出现在group by里面,分组函数的过滤必须使用hivi ...

  9. Hive 函数UDF开发以及永久注册UDF函数

    explode: (把一串数据转换成多行的数据) 创建一个文本: [hadoop@ruozehadoop000 data]$ vi hive-wc.txt hello,world,welcome he ...

最新文章

  1. VC 利用DLL共享区间在进程间共享数据及进程间广播消息
  2. Kubernetes(六) - Secret和私有仓库认证
  3. Cartographor定位-shell脚本:不停拉起死掉的程序和脚本
  4. oracle实例与数据库
  5. 基建管控系统_催生智慧园区三维管控系统解决方案,新基建背景下构建可视化监控平台...
  6. camerax_Android CameraX概述
  7. 信息率失真函数matlab,基于MATLAB的信息率失真函数计算本科毕业论文.doc
  8. 书店管理系统(C++初学者友好版)
  9. 长发变短发,卷发变直发,坚持每天梳头
  10. G1怎样设置WAP上网
  11. 【20保研】中国科学技术大学2019年第二届大学生大数据夏令营通知
  12. VS2019 - 动态库的编写和调用
  13. 面向集团客户云计算运营平台的市场情况及产品发展——之云计算运营平台方案(二)
  14. 关于上传文件时,服务器选择列表为空的解决办法
  15. 《Cisco路由器配置与管理完全手册》(第二版)前言和目录
  16. Propensity score简介
  17. 珂朵莉与斯卡布罗集市
  18. 深入浅出DNS系列(九)- EDNS
  19. 还是有问题想请教一下大家
  20. 通勤必备的epub小说阅读器,这几款更好用

热门文章

  1. linux安装prometheus-webhook-dingtalk(二)
  2. 完整英文版资产负债表、利润表及现金流量表
  3. 计算机企业社会实践活动鉴定范文,计算机专业社会实践自我鉴定范文
  4. OS_Sched 函数
  5. mysql回到上级目录_获取当前目录的上级目录
  6. CTFHub-Web-密码口令-默认口令
  7. 天合化工上市以来,成为股市模范,专家分析全球股市欺诈案慢慢减少原因
  8. AWS认证是什么?怎么报考?
  9. 直击Huawei Mate 40产线背后的华为云IoT智能制造
  10. js截取空格之前的内容