需要交流请进群-- 494831900 --我和群中朋友会及时回答
1:在eclipse中编写hive的自定义的函数时必须到入hadoop-core-1.1.2.jar ,hive-exec-0.9.0.jar 2个jar包 。jar包可根据自己版本添加。
2 :写一个类继承 UDF类 重写其中的 evaluate()方法
public class CountString extends UDF{
public int evaluate(String str){
try {
String [] spilts=str.split("");
if(spilts.length>0){
return spilts.length;
}else{
return 0;
}
} catch (Exception e) {
return 0;
}
}
}
3:导出jar包不需要包含前面的2个jar包,只需导出实现类CountString即可。
4:把文件放到当到目录中 /usr/local/testdata/countudf.jar.
5:执行 hive 进如hive脚本页面,添加临时function,执行命令 add jar /usr/local/testjar/countudf.jar 。出现如下提示即可:
Added /usr/local/testjar/countudf.jar to class path
Added resource: /usr/local/testjar/countudf.jar
6:执行此命令:create temporary function countstr as 'com.hive.CountString';出现ok即可完成
countstr-->是hive的函数名称
7:select countstr(key) from test_table;(这是测试)统计出key的字数
8:这种方式在会话结束后,函数自动销毁,因此每次打开新的会话,都需要重新add jar并且create temporary function
9. 进入会话前自动创建
使用hive -i参数在进入hive时自动初始化
创建一个文件 vi hive_init 内容如下:
add jar /usr/local/testjar/countudf.jar;
create temporary function countstr as 'com.hive.CountString';
在启动hive脚本时使用如下命令 hive -i (文件)hive_init.