CDH 创建Hive UDF函数
导入依赖包:
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/minUDTF
(User-Defined Table-Generating Functions) 一进多出,如explode()
使用方式 :在HIVE会话中add 自定义函数的jar文件,然后创建function继而使用函数
UDF 开发
- UDF函数可以直接应用于select语句,对查询结构
做格式化处理
后,再输出内容 - 编写UDF函要注意以下几点:
a. 自定义UDF需要继承org.apache.hadoop.hive.ql.exec.UDF
b. 需要实现evaluate函数,evaluate函数支持重载 - 步骤
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函数相关推荐
- hive UDF函数取最新分区
hive UDF函数取最新分区 1.pom文件 <dependencies><!-- https://mvnrepository.com/artifact/org.apache.hi ...
- hive UDF函数
虽然Hive提供了很多函数,但是有些还是难以满足我们的需求.因此Hive提供了自定义函数开发 自定义函数包括三种UDF.UADF.UDTF UDF(User-Defined-Function) UDA ...
- Impala UDF - Impala调用Hive UDF函数
Impala 中运行 Hive UDF 场景:部分查询需要快速返回,使用Impala进行快速.复杂的查询 1.简单的UDF函数过滤,判断是否包含"好"字,返回boolean类型 i ...
- Hive UDF 函数指南
精选30+云产品,助力企业轻松上云!>>> 点击蓝色"大数据每日哔哔"关注我 加个"星标",第一时间获取大数据架构,实战经验 Hive 内置了 ...
- 编写hive udf函数
大写转小写 package com.afan; import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.io.Text; ...
- 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 ...
- 创建hive的AES加密解密函数
1.写java代码,打jar包 1.pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <pro ...
- 【若泽大数据实战第十九天】Hive 函数UDF开发以及永久注册udf函数
前言: 回顾上期课程,上次课我们讲了聚合函数,多进一出, 分组函数 group by,出现在select里面的字段除了分组函数之外,其他都要出现在group by里面,分组函数的过滤必须使用hivi ...
- Hive 函数UDF开发以及永久注册UDF函数
explode: (把一串数据转换成多行的数据) 创建一个文本: [hadoop@ruozehadoop000 data]$ vi hive-wc.txt hello,world,welcome he ...
最新文章
- VC 利用DLL共享区间在进程间共享数据及进程间广播消息
- Kubernetes(六) - Secret和私有仓库认证
- Cartographor定位-shell脚本:不停拉起死掉的程序和脚本
- oracle实例与数据库
- 基建管控系统_催生智慧园区三维管控系统解决方案,新基建背景下构建可视化监控平台...
- camerax_Android CameraX概述
- 信息率失真函数matlab,基于MATLAB的信息率失真函数计算本科毕业论文.doc
- 书店管理系统(C++初学者友好版)
- 长发变短发,卷发变直发,坚持每天梳头
- G1怎样设置WAP上网
- 【20保研】中国科学技术大学2019年第二届大学生大数据夏令营通知
- VS2019 - 动态库的编写和调用
- 面向集团客户云计算运营平台的市场情况及产品发展——之云计算运营平台方案(二)
- 关于上传文件时,服务器选择列表为空的解决办法
- 《Cisco路由器配置与管理完全手册》(第二版)前言和目录
- Propensity score简介
- 珂朵莉与斯卡布罗集市
- 深入浅出DNS系列(九)- EDNS
- 还是有问题想请教一下大家
- 通勤必备的epub小说阅读器,这几款更好用