hive 转拼音udf_Hive的UDF实现及注意事项

Hive自身查询语言HQL能完毕大部分的功能,但遇到特殊需求时,须要自己写UDF实现。下面是一个完整的案例。

1、eclipse中编写UDF

①项目中增加hive的lib下的全部jar包和Hadoop中share下hadoop-common-2.5.1.jar(Hadoop眼下最新版本号2.5.1)。

②UDF类要继承org.apache.hadoop.hive.ql.exec.UDF类。类中要实现evaluate。

当我们在hive中使用自己定义的UDF的时候,hive会调用类中的evaluate方法来实现特定的功能

③导出项目为jar文件。

注:项目的jdk与集群的jdk要一致。

详细样例:package com.zx.hive.udf;import org.apache.hadoop.hive.ql.exec.UDF;public class UdfTestLength extends UDF{

public Integer evaluate(String s)

{

if(s==null)

{

return null;

}else{

return s.length();

}

}

}将上面的类打成jar的形式,我使用eclipse直接导出为test-udf.jar包。然后放在/root文件夹中。

2、自己定义函数调用过程:

①加入jar包(在hive命令行里面运行)

hive> add jar /root/test-udf.jar;

②创建暂时函数 ,hive命令行关闭后,即失效。

hive> create temporary function testlength as ‘com.zx.hive.udf.UdfTestLength‘;

③调用

hive> select id, name, testlength(name) from student;

④将查询结果保存到HDFS中

hive> create table result row format delimited fields terminated by ‘\t‘ as select id,testlength(nation) from student;

3、遇到的问题:

①须要引用第三方包,有两种方式:

1)在执行hive hql时,手动将udf所须要的jar包通过add语句加入:add jar /root/***.jar(測试通过)。2)安装eclipse 插件:fatjar (測试通过)

在线安装fatjar:

eclipse菜单条 help >software updates >Search for new features to install>new update site>

填写name 和url

name:随意起个, 就写fat吧

url:这个是fat jar的地址  输入http://kurucz-grafika.de/fatjar

使用fatjar打包的方法:

②程序须要读取外部资源

首先外部资源要在UDF执行之前加入,使用命令add file [file]在hive中进行暂时注冊。

UDF中内部调用的文件地址直接用本地文件地址表示。

比如: String filepath = "/home/dev/test/test.txt";上传至hive之后。外部文件地址仅仅需改成String filepath = "./test.txt";就可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值