IDEA构建UDF函数&注册到Hive源码&编译&验证及使用
来源:互联网 发布:phaser.js 编辑:程序博客网 时间:2024/06/17 00:38
一、注册到Hive源码目的
在上一篇UDF函数博文中说过,Hive自带的函数并不能满足日常工作,有很多功能需要我们自己去编写。对于经常使用的功能就希望注册到Hive当中和Hive的函数一样使用了。
二、IDEA构建UDF函数
请参考IDEA构建Hive的UDF函数
三、注册到Hive源码
1、下载Hive源码
2、将Hive源码放到/opt/sourcecode目录下并解压
[root@hadoop001 sourcecode]# lshive-1.1.0-cdh5.7.0 hive-1.1.0-cdh5.7.0-src.tar.gz
3、将IDEA构建的HelloUDF2.java放到以下目录(Hive自带函数目录)
/opt/sourcecode/hive-1.1.0-cdh5.7.0/ql/src/java/org/apache/hadoop/hive/ql/udf
4、修改HelloUDF2.java
vi HelloUDF2.java
将package com.ruozedata.hive更改成package.org.apache.hadoop.hive.ql.udf
5、修改FunctionRegistry.java 文件
vi /opt/sourcecode/hive-1.1.0-cdh5.7.0/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java
在FunctionRegistry.java文件19行下面添加
import org.apache.hadoop.hive.ql.udf.HelloUDF2;
在static{}代码块(174行)中添加
system.registerUDF("HelloUDF2", HelloUDF2.class, false);
四、开始编译
在/opt/sourcecode/hive-1.1.0-cdh5.7.0路径下执行
cd /opt/sourcecode/hive-1.1.0-cdh5.7.0#编译时间较长,耐心等待mvn clean package -DskipTests -Phadoop-2 -Pdist
编译完成后会在/opt/sourcecode/hive-1.1.0-cdh5.7.0/packaging目录下生成一个target文件夹
target文件夹下的apache-hive-1.1.0-cdh5.7.0-bin.tar.gz包就是编译之后的文件
五、验证及使用
如果要使用自己构建的函数有两种方法
㈠将apache-hive-1.1.0-cdh5.7.0-bin.tar.gz部署到机器上,可以参考Hive简单部署
然后hive (default)> show functions;
可以看到helloudf2函数(add jar方式看不到)
查看函数的描述
hive (default)> desc function extended helloudf2;OKtab_namehelloudf2(input_str) - returns Hello:inputExample: > SELECT helloudf2('zhangsan') FROM src LIMIT 1; 'Hello:zhangsan'Time taken: 0.032 seconds, Fetched: 4 row(s)
㈡如果你已经部署了Hive了那么采用下面的方式
备份已部署的Hive的hive-exec-1.1.0-cdh5.7.0.jar文件
mv $HIVE_HOME/lib/hive-exec-1.1.0-cdh5.7.0.jar $HIVE_HOME/lib/hive-exec-1.1.0-cdh5.7.0.jar.bak
将编译后的hive-exec-1.1.0-cdh5.7.0.jar文件拷贝到$HIVE_HOME/lib/目录下
cp hive-exec-1.1.0-cdh5.7.0.jar $HIVE_HOME/lib
然后查看是否成功(有时需要hive-exec-1.1.0-cdh5.7.0.jar.bak文件移除lib才可以成功)
hive (default)> show functions; hive (default)> desc function extended helloudf2;
功能已实现
hive (default)> select ename,helloudf2(ename) from emp;OKename _c1SMITH Hello:SMITHALLEN Hello:ALLENWARD Hello:WARDJONES Hello:JONESMARTIN Hello:MARTINBLAKE Hello:BLAKECLARK Hello:CLARKSCOTT Hello:SCOTTKING Hello:KINGTURNER Hello:TURNERADAMS Hello:ADAMSJAMES Hello:JAMESFORD Hello:FORDMILLER Hello:MILLERHIVE Hello:HIVE
- IDEA构建UDF函数&注册到Hive源码&编译&验证及使用
- IDEA构建Hive的UDF函数
- HIVE UDF函数使用
- 将自定义函数 helloUDF2 注册到hive 源码中,并且重新编译hive
- 将自定义函数 helloUDF2 注册到hive 源码中,并且重新编译hive
- hive 使用udf函数实现数据导入到mysql
- hive udf开发以及永久注册udf函数
- hive udf开发以及永久注册udf函数
- 编写hive udf和使用hive udf:hue的hive界面中使用hive udf函数、oozie使用hive udf函数、hive命令行使用udf函数
- 编写hive udf和使用hive udf:hue的hive界面中使用hive udf函数、oozie使用hive udf函数、hive命令行使用udf函数
- Hive UDF函数开发及企业规范
- Hive中的UDF及自定义函数示例
- hive自定义UDF、UDAF、UDTF及使用
- hive下UDF函数的使用
- hive下UDF函数的使用
- hive 自定义UDF,hive编译
- 开发hive UDF函数
- HIVE 自定义函数 UDF
- Activiti 个人任务(三种指派方式)
- nginx安装nginx-rtmp-module视频流媒体播放服务器模块
- 9月30日云栖精选夜读:阿里巴巴摘得LSVC桂冠 打造领先AI视频技术
- android.os.DeadSystemException
- Codeforces Round #305 (Div. 1) B. Mike and Feet(单调栈)
- IDEA构建UDF函数&注册到Hive源码&编译&验证及使用
- c++ 引用
- 深入理解Feign之源码解析
- 在Reactjs中使用Redux
- SVN的安装与配置
- ConfigReader(五)—— ReadBuySkinConfig
- ANDROID内存优化
- 2017年10月08日 上学
- nmake命令(windows下的makefile)