hive 的udf 函数使用
生活随笔
收集整理的这篇文章主要介绍了
hive 的udf 函数使用
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
- 1)依据课程讲解UDF编程案例,完成练习,总结开发UDF步骤,代码贴图,给予注释,重点
- 2)更改emp 表中名字的大写给为小写。
一:hive 的udf 函数:
1.1 hive UDF 函数概述:
1. hive自带了一些函数比如:max/min 等,但是由于自带的函数数量有限,自己可以定义udf来方便扩展。 2. udf 函数可以直接应用于select 语句,对查询结构做格式化处理之后,然后再输出内容。1.2 hive 编写udf函数的时候需要注意的地方:
1. 自定义udf函数需要继承org.apache.hadoop.hive.ql.UDF 2. 需要实现evaluate 函数,evaluate 函数支持重载。 3. udf 必须要有返回类型,可以返回null,但是返回类型不能为void; 4. udf 常用Text/LongWrite 等类型,不推荐使用java类型。1.3 hive 的udf 函数编写:
1. 环境配置处理:更改repository源cd .m2/ mv repository repository.bak 上传新的repository.tar.gz 包。 tar -zxvf repository.tar.gz 备份原有setting.xml 文件 cp -p setting.xml setting.xml.bak cd /home/hadoop/yangyang/maven/conf cp -p setting.xml setting.xml1.4 更改maven源的配置:
在setting.xml 中<mirrors> ....</mirrors> 之间增加新的源仓库:<mirror><id>nexus-osc</id><mirrorOf>central</mirrorOf><name>Nexus osc</name><url>http://maven.oschina.net/content/groups/public/</url></mirror> 拷贝新的setting文件到maven 的配置文件中 cp -p .m2/setting.xml /home/hadoop/yangyang/maven/conf1.5 更改eclipse的pom.xml 文件增加:
在原有的<dependencies>....</dependencies> 之间加上hive 的参数:<dependency><groupId>org.apache.hive</groupId><artifactId>hive-jdbc</artifactId><version>0.13.1</version></dependency><dependency><groupId>org.apache.hive</groupId><artifactId>hive-exec</artifactId><version>0.13.1</version></dependency> </dependencies>二: 更改emp 表中名字的大写给为小写。
2.1 新建UDF包 编写lowerudf.java
package org.apache.hadoop.udf;import org.apache.commons.lang.StringUtils; import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.io.Text;/*** New UDF classes need to inherit from this UDF class.*/ public class LowerUDF extends UDF{/*** 1. Implement one or more methods named "evaluate" which will be called by Hive.* * 2. "evaluate" should never be a void method. However it can return "null" if needed.*/public Text evaluate(Text str){// input parameter validateif(null == str){return null ;}// validate if(StringUtils.isBlank(str.toString())){return null ;}// lower return new Text(str.toString().toLowerCase()) ;}public static void main(String[] args) {System.out.println(new LowerUDF().evaluate(new Text()));}}2.2 导出jar包 到/home/hadoop/yangyang/hive/jars 下面:
2.3 执行lowerudf包 增加jar包与hive的关联:
add jar /home/hadoop/yangyang/hive/jars/lowerudf.jar create temporary function my_lower as 'org.apache.hadoop.udf.LowerUDF' ; show functions;2.3.1 销毁临时的udf 函数:
drop temporary function add_example; <!--这里指my_lower 函数-->2.4 执行my_lower 函数:
select my_lower(ename) from emp;转载于:https://blog.51cto.com/flyfish225/2097260
总结
以上是生活随笔为你收集整理的hive 的udf 函数使用的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: node+express+mongDB实
- 下一篇: neutron DVR