将自定义函数集成到Hive的源码
2017-10-08 01:27
477 查看
Hive中自定义函数概述
在工作中,Hive的内置函数,远远不能满足需求,因此需要自定义函数UDF: 用户自定义 one-to-one(一进一出,一对一)
UDAF: many-to-one(多对一)
UDTF: one-to-many(一进多出)
自定义函数的开发需要按照Hive的要求,见下图:
Hive源码下载
版本:hive-1.1.0-cdh5.7.0-src.tar.gz地址:http://archive.cloudera.com/cdh5/cdh/5/hive-1.1.0-cdh5.7.0-src.tar.gz
UDF函数的编写
编写SayHello.java文件,将其保存到$HIVE_HOME/ql/src/java/org/apache/hadoop/hive/ql/udf路径之下package org.apache.hadoop.hive.ql.udf; import org.apache.hadoop.hive.ql.exec.Description; import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.io.Text; @Description(name = "SayHello", value = "_FUNC_(input_str) - returns the Hello: input_str", extended = "Example:\n " + " > SELECT _FUNC_('zhangsan') FROM src LIMIT 1;\n" + " 'Hello: zhangsan'\n") public class SayHello extends UDF{ public Text evaluate(Text input){ return new Text("Hello: " + input); } }
修改FunctionRegistry.java
路径:$HIVE_HOME/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java... import org.apache.hadoop.hive.ql.udf.SayHello; ... // registry for system functions private static final Registry system = new Registry(true); static { system.registerGenericUDF("concat", GenericUDFConcat.class); system.registerUDF("SayHello", SayHello.class, false); system.registerUDF("substr", UDFSubstr.class, false); system.registerUDF("substring", UDFSubstr.class, false); system.registerUDF("space", UDFSpace.class, false);
编译Hive源码
$>cd $HIVE_HOME $>mvn clean package -DskipTests -Phadoop-2 -Pdist
编译成功截图:
Hive部署
具体部署参见博文:Hive的产生背景 & 概述 & 发展历程 & 架构 & 部署及简单入门测试
hive>show functions;
相关文章推荐
- 将自定义函数 helloUDF2 注册到hive 源码中,并且重新编译hive
- HIVE 编写自定义函数UDF
- HIVE 自定义函数之UDF/UDAF/UDTF
- hive和presto一些好用的自定义udf函数
- Hive中添加自定义udf udaf udtf等函数的jar文件的三种方法
- lib_mysqludf_sy--mysql集成用户自定义函数(添加自定义函数)
- hive自定义函数UDF
- [Hive]Hive自定义函数UDF
- 1006-Hive的自定义UDF函数
- 源码推荐(5.05):快速集成版本新特性介绍页面,可以横向展示文本内容的自定义cell,根据文本无限滚动
- 利用eclipse编写自定义hive udf函数
- 在运行hadoopdb\hive\hadoop源码时不能正确调用自定义core-site.xml等配置文件
- 5.1奉献【源码】一个集成自定义分页和列可拖动的GridView控件
- IOS电子书、启动页集成、瀑布流封装、地图应用、自定义tabBar等源码
- 查询oracle自定义函数的源码
- 使用Hive自定义函数生成UUID随机字符串函数
- hive的自定义函数
- (大数据之hive)hive的自定义函数练习
- SQL Server 2005中开发通用的自定义函数,实现类似Min或MAX函数功能(附源码)
- HIVE自定义函数 UDF