IDEA构建Hive的UDF函数
来源:互联网 发布:入门鼠标推荐 知乎 编辑:程序博客网 时间:2024/06/03 21:57
一、编译目的
hive自带了很多内置函数,但是这些函数并不能满足我们的日常工作。当我们频繁需要使用一个函数而hive又没有时就需要我们自定义函数了。
二、UDF(user defined function)函数构建步骤
1、自定义一个Java类
2、继承UDF类
3、重写evaluate方法
4、打成jar包
6、在hive执行add jar方法
7、在hive执行创建模板函数
8、hql中使用
三、使用idea+maven构建
1、pom文件加入以下信息
<properties> <project.build.sourceEncoding>UTF8</project.build.sourceEncoding> <!--Hadoop版本更改成自己的版本--> <hadoop.version>2.6.0-cdh5.7.0</hadoop.version> <hive.version>1.1.0-cdh5.7.0</hive.version></properties> <!--加入Hadoop原生态的maven仓库的地址--> <repository> <id>Apache Hadoop</id> <name>Apache Hadoop</name> <url>https://repo1.maven.org/maven2/</url> </repository> <!--加入cdh的maven仓库的地址--><repository> <id>cloudera</id> <name>cloudera</name> <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url> </repository> </repositories> <dependencies> <!--添加hadoop依赖--> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>${hadoop.version}</version> </dependency> <!--添加hive依赖--> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <version>${hive.version}</version> </dependency>
2、自定义java类
package com.ruozedata.hive;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 Hello:input", extended = "Example:\n " + " > SELECT _FUNC_('zhangsan') FROM src LIMIT 1;\n" + " 'Hello:zhangsan'") // 继承UDF类public class HelloUDF2 extends UDF{ //重写evaluate方法 public Text evaluate(Text input){ return new Text("Hello:"+input); } public static void main(String[] args) { HelloUDF2 UDF=new HelloUDF2(); System.out.print(UDF.evaluate(new Text("zhangsan"))); }}
3、打成jar包
在自己项目D:\hdoopspace\target目录下
hive-train-1.0.jar
4、将jar包上传并添加到hive
hive (default)> add jar /tmp/data/hive-train-1.0.jar;
5、创建模板函数
hive (default)>CREATE TEMPORARY FUNCTION sayHello AS 'com.ruozedata.hive.HelloUDF2';
6、hql使用UDF
hive (default)> select ename,sayhello(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:HIVETime taken: 0.131 seconds, Fetched: 15 row(s)
四、注意点
以上方法只是单session的而且是临时有效的,也就是只在当前session有用。后续会给大家奉上将UDF函数注册到hive源码当中,那么自己写的函数也就成了hive的内置函数了。
阅读全文
0 0
- IDEA构建Hive的UDF函数
- hive的UDF 函数
- hive的UDF 函数
- hive的UDF 函数
- IDEA构建UDF函数&注册到Hive源码&编译&验证及使用
- 写hive的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函数的使用
- Hive的预定义UDF函数
- Hive的预定义UDF函数
- Hive的预定义UDF函数
- 开发HIVE的UDF自定义函数
- 1006-Hive的自定义UDF函数
- 开发HIVE的UDF自定义函数
- hive的UDF 函数(User-Defined-Function)
- Alluxio使用场景
- 斐波那契数列变形之青蛙跳台阶
- 【Linux】软件安装
- HTML5 Storage JSON
- C
- IDEA构建Hive的UDF函数
- Java网络编程之NIO(ServerSocketChannel/SocketChannel)-yellowcong
- 设计模式之装饰者模式
- 教育思想研究----爱因斯坦论教育
- 【前端面试】前端面试题300道~~熬夜吐血整理
- sscanf类似于正则表达式的进阶用法
- 背包九讲——01背包(降维+常数级优化)
- Java基础学习之Java基本语法(2)【变量的分类】
- 算法学习2