hive java 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.xml

1.4 更改maven源的配置:

在setting.xml 中 .... 之间增加新的源仓库:

nexus-osc

central

Nexus osc

http://maven.oschina.net/content/groups/public/

拷贝新的setting文件到maven 的配置文件中

cp -p .m2/setting.xml /home/hadoop/yangyang/maven/conf

1.5 更改eclipse的pom.xml 文件增加:

在原有的.... 之间加上hive 的参数:

org.apache.hive

hive-jdbc

0.13.1

org.apache.hive

hive-exec

0.13.1

二: 更改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 validate

if(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 下面:

5d3e7c00a3eb68056264e36545b5bd11.png

4af99cf240c5ab621fd52bc61d312f83.png

b10e99d1426cfdd46cb0c2204f01fdb3.png

a1a4f93bc1ef74528f5b504ef2d83089.png

8fa4ae698ed12f551fdebe6b206dec50.png

ac9299e4bc605da13add019e012fa4c9.png

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;

f1154a034df05dac22caac2d560772cb.png

24beb60138ef3e81c192ba8fada1827f.png

93aee1eb04c2d22bca826c088e47bf54.png

2.3.1 销毁临时的udf 函数:

drop temporary function add_example;

2.4 执行my_lower 函数:

select my_lower(ename) from emp;

c1da70e320eb2d25369f2d9e43bcd300.png

0a3dba9422a97f4797c54fd37de2187e.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值