Hive开发UDF

Hive开发UDF

从无到有开发hive的udf,本篇不针对简单的,针对复杂参数



 移除点击此处添加图片说明文字

目录:

add jar /opt/workspace/udf/GetAppUDF.jar;

  移除点击此处添加图片说明文字



小坑,路径一定要写对,之前出现文件找不到,我以为要放到hdfs上面呢。

[hive@dw-gateway03 root]$ hadoop fs -mkdir /user/hive/warehouse/udf

[hive@dw-gateway03 root]$ hadoop fs -put /opt/workspace/udf​/GetAppUDF-1.0.jar /user/hive/warehouse/udf/GetAppUDF.jar​

后来及时悬崖勒马。



创建临时函数:

create temporary function GetAppUDF as 'com.test.Hive.udf.GetAppUDF';

  移除点击此处添加图片说明文字

​哦,原来是jdk版本有问题啊。

  移除点击此处添加图片说明文字

​本机是最新版,看下服务器的,

  移除点击此处添加图片说明文字

​嗯,1.7.0_55的,咱们要去安装一下了。

  移除点击此处添加图片说明文字

安装

  移除点击此处添加图片说明文字

​等一下进度

  移除点击此处添加图片说明文字

  移除点击此处添加图片说明文字

  移除点击此处添加图片说明文字

​然后咱们remove换一下jdk

搞定之后,重新打包吧。

然后发布,还是这个玩意:

  移除点击此处添加图片说明文字

​好难受呀。

然后咱们换第三个,1.7.0.88次修改,第三次装jdk好了,报另一个错了。

解决了这个问题了,还是蛮开心的。

  移除点击此处添加图片说明文字

​咱们再:

create temporary function GetAppUDF as 'com.test.Hive.udf.GetAppUDF'; 

create temporary function GetAppUDF  as ' com.test.Hive.udf.GetAppUDF '; 

总是报错:FAILED: Class com.test.Hive.udf.GetAppUDF not found

后来我发现了,乱倒腾发现的。

  移除点击此处添加图片说明文字

​那我们把他重新打印一遍:


add jar /opt/workspace/udf/GetAppUDF.jar;

create temporary function GetAppUDF  as 'com.test.Hive.udf.GetAppUDF'; 


然后我们运行

  移除点击此处添加图片说明文字

​我靠,然后我desc safedata.apk_use

发现

  移除点击此处添加图片说明文字

​array<struct<apk:string,n:string,v:string,v_n:string,c:int,t:int>>

这种格式的字段,我第一次见到。

然后咱们查资料发现这么个东西:

  移除点击此处添加图片说明文字

​暂且理解为全部强制性读进来。

但是这回报错:

  移除点击此处添加图片说明文字

​这个到底是怎么回事呢?

原来是因为我们复制了很多>

  移除点击此处添加图片说明文字

​那好,我们把>删掉,重来。

select  uuid,GetAppUDF(apk_use),pt from safedata.apk_use limit 100;

结果:

FAILED: SemanticException [Error 10014]: Line 3:1 Wrong arguments 'apk_use': No matching method for class com.test.Hive.udf.GetAppUDF with (array<struct<apk:string,n:string,v:string,v_n:string,c:int,t:int>>). Possible choices: _FUNC_(string)  

原因就是这个格式,很恶心, array<struct<apk:string,n:string,v:string,v_n:string,c:int,t:int>>

卡了很久,怎么办呢。

卡住了很久,我感觉要来个狠得。请看

  移除点击此处添加图片说明文字

​结果气得想吐学:

  移除点击此处添加图片说明文字

​java也这么蠢啊,好难受,妈的。

去网上找大神操作吧。

  移除点击此处添加图片说明文字

​还是老样子,卡在这里快一到两个小时了,问了一下老大,他也不知道,让我研究。那好吧,继续研究吧。


我们看一篇文章:

Hive中,除了提供丰富的内置函数(见[一起学Hive]之二–Hive函数大全-完整版)之外

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值