首页 > IT职业 > IT生活 > hive学习笔记之九:基础UDF
github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;

| 名称 | 链接 | 备注 |
|---|---|---|
| 项目主页 | github.com/zq2599/blog_demos | 该项目在GitHub上的主页 |
| git仓库地址(https) | github.com/zq2599/blog_demos.git | 该项目源码的仓库地址,https协议 |
| git仓库地址(ssh) | git@github.com:zq2599/blog_demos.git | 该项目源码的仓库地址,ssh协议 |

project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
modelVersion>4.0.0modelVersion>
groupId>com.bolingcavalrygroupId>
artifactId>hiveudfartifactId>
version>1.0-SNAPSHOTversion>
dependencies>
dependency>
groupId>org.apache.hivegroupId>
artifactId>hive-execartifactId>
version>1.2.2version>
scope>providedscope>
exclusions>
exclusion>
groupId>org.pentahogroupId>
artifactId>pentaho-aggdesigner-algorithmartifactId>
exclusion>
exclusions>
dependency>
dependency>
groupId>org.apache.hadoopgroupId>
artifactId>hadoop-commonartifactId>
version>2.7.7version>
scope>providedscope>
dependency>
dependencies>
project>
package com.bolingcavalry.hiveudf.udf;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.hive.ql.exec.UDF;
public class Upper extends UDF {
/**
* 如果入参是合法字符串,就转为小写返回
* @param str
* @return
*/
public String evaluate(String str) {
return StringUtils.isBlank(str) ? str : str.toUpperCase();
}
}
add jar /home/hadoop/udf/hiveudf-1.0-SNAPSHOT.jar;
create temporary function udf_upper as 'com.bolingcavalry.hiveudf.udf.Upper';
select name, udf_upper(name) from student;

drop temporary function if exists udf_upper;
delete jar /home/hadoop/udf/hiveudf-1.0-SNAPSHOT.jar;
hive> select name, udf_upper(name) from student;
FAILED: SemanticException [Error 10011]: Line 1:13 Invalid function 'udf_upper'
/home/hadoop/hadoop-2.7.7/bin/hadoop fs -mkdir /udflib
/home/hadoop/hadoop-2.7.7/bin/hadoop fs -put /home/hadoop/udf/hiveudf-1.0-SNAPSHOT.jar /udflib/
create function udf_upper as 'com.bolingcavalry.hiveudf.udf.Upper'
using jar 'hdfs:///udflib/hiveudf-1.0-SNAPSHOT.jar';

6. 新开hive会话窗口尝试上述sql,依旧没有问题,证明UDF是永久生效的;
我是欣宸,期待与您一同畅游Java世界…
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/818/viewspace-2797730/ ,如需转载,请注明出处,否则将追究法律责任。