hive之UDF

作者: 任嘉平生愿 | 来源:发表于2019-02-14 15:04 被阅读0次

UDF可以构造简单的函数来得到我们想要的数据输出,作用就是加工数据。

实例:

package udf;import org.apache.hadoop.hive.ql.exec.UDF;

public class helloudf extends UDF{

public String evaluate(String str){

try {

return"HelloWorld " + str;

} catch (Exception e) {

// TODO: handle exceptionreturnnull;

}

}

}

上面是一个java project 写的 udf  程序的意思大家应该都明白

打包成jar: 用fat jar  博客之前发过jar包了,然后导出成jar  传到Linux本地目录

进入hive

add jar /home/hadoop/udf_1_fat.jar;

//注意,这个地址为Linux本地地址,不是hdfs地址  传到hdfs是接收不到的  除非你加上hdfs链接(没有测试)

CREATE TEMPORARY FUNCTION helloworld AS 'udf.helloudf'show functions 

 可以看到所有支持的方法,里面会有helloworld

找一个表,里面有点数据的

我这边找的一个表,我查出来的数据为:

hive> select * from hive1 limit 10;

1 百花家园 张云龙 18001295207 155 2室1厅1卫 94 2/5层 南北 sina 河北链家地

2 中国铁建原香小镇 高伟 13501061874 210 3室2厅1卫 115 6/6层 南北 sina 凯利门

3 金泰城丽湾 马丰收 18210989857 1200 5室3厅3卫 258 18/19层 南北 sina 21世纪

4 恋日绿岛 于洪梁 13366126543 430 3室2厅2卫 149 2/4层 南北 sina 如一房产

5 怡海花园恒泰园 史润生 18401296028 520 2室2厅2卫 136 15/28层 西 sina 我爱我家

6 高教新城观宇园 张超 18910750910 180 2室1厅1卫 89 14/18层 南北 sina 晨建顺房屋

7 东润枫景 孙心源 13501365333 380 2室1厅1卫 91 1/20层 东南 sina 我爱我家

8 北苑家园望春园 刘韬 18311385981 245 1室1厅1卫 69 17/25层 东南 sina 城承物业

9 中央公园广场 吕德辉 15010507970 5800 1室0厅0卫 672 2/26层 南 sina 华清永泰

10 上上城第二季 杨瑞平 15001210716 200 4室1厅2卫 155 6/15层 南北 sina 河北链家地

字段对应就不说了

下面就是结果了

hive> select helloworld(hive1.large) from hive1 limit 10;

OK

HelloWorld 94

HelloWorld 115

HelloWorld 258

HelloWorld 149

HelloWorld 136

HelloWorld 89

HelloWorld 91

HelloWorld 69

HelloWorld 672

HelloWorld 155

Hive UDF开发 第一个例子 - 山高似水深 - 博客园

相关文章

网友评论

    本文标题:hive之UDF

    本文链接:https://www.haomeiwen.com/subject/dyeeeqtx.html