hive 的udf(user defined function)自定义函数
hive 的udf(user defined function)自定义函数
1.新建java maven 项目
2.pom.xml 中引入
<dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.7.4</version> </dependency> <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <version>1.2.1</version> </dependency>
3.写一个 java 类,继承 UDF,并重载 evaluate 方法【注意:udf类中并没有evaluate()方法,hive的内部机制会自动调用 evaluate()方法;同时自己创建的java类中可以定义多个evaluate()方法 如: public Text evaluate(Text s) {} public String evaluate(int end){}】【重写的evaluate()方法必须有返回值 不能用void修饰】
4.需求:定义一个自定义函数 将大写转换成小写 代码如下:
package cn.hive;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Lower extends UDF {
public Text evaluate(Text s) {
if (s == null) {
return null;
}
return new Text(s.toString().toLowerCase());
}
5.将项目打包 打包后 放到linux系统hive的默认目录【不需要上传到hdfs】【默认目录:/opt/molute/jars/ (没有的话自己创建目录)
6.将jar包 添加到hive的classpath 【进入hive命令】【此步骤也相当于在hive上注册jar包】
hive> add jar /opt/molute/jars/udf.jar;
若执行成功 显示如下:
hive> add jar /opt/module/jars/udf.jar;
Added [/opt/module/jars/udf.jar] to class path
Added resources: [/opt/module/jars/udf.jar]
7.创建临时函数与开发好的 java class 关联
create temporary function toLowerCase as ‘cn.hive.Lower’; [【’’ 里是java类的路径 toLoweCase 是起的函数名 temporary是临时的】
8.测试 :show functions; 看我们刚才创建的hive 的自定义函数 toLowerCase 有没有
有的话 ,我们使用toLoweCase() 函数查询我们的一张表peopeo数据试试 如:
select toLoweCase(name) from peopeo; 结果成功 。ok 结束。
9.再举个例子:需求: 输入一个数字,输出从1到该数字的一个列表
代码:
自我理解udf自定义函数:1.可以使用java中现有的方法 ,在evaluate(参数)方法中调用,并返回我们想要的数据即可。2.或者我们在java中自定义一个方法 写自己的业务实现功能,然后定义evaluate()方法时 传递适合的参数 调用我们自定义的方法 并evaluate 返回我们需要的数据 也行。
小总:打好的包 不需要上传到hdfs上,有默认的路径 :/opt/molute/jars/ 【没有自己手动创建即可】上面创建的只是临时自定义函数 【对于每一行输入都会调用到evaluate()函数。而evaluate()函数处理后的值会返回给Hive。】,如果想创建永久自定义函数 我们需要
在 hive-site.xml 文件中添加
hive.aux.jars.path
file:///opt/module/hive/lib/json-serde-1.3.8-jar-with-dependencies.jar,file:///opt/module/jar/udf.jar
这里相当于添加了多个jar
永久注册
hive (default)>create function getdaybegin AS ‘com.lzl.hive.Lower’;
删除函数
hive (default)>drop function getdaybegin;
链接:https://blog.csdn.net/liangzelei/article/details/81206012
- hive的UDF 函数(User-Defined-Function)
- DB2基于JAVA的自定义函数(user-defined-function)示例
- 第39天: UDF函数 user defined function
- HP Vertica使用java编写user defined function(UDF)嵌入函数
- hive UDF(User-Defined-Function) 实战
- HIVE 自定义函数之UDF/UDAF/UDTF
- hive 添加UDF(user define function) hive的insert语句
- hive 自定义函数UDF,UDAF
- Hive中添加自定义UDF,UDAF,UDTF等函数jar文件的三种方式
- hive系列(2)---自定义函数UDF
- Hive自定义函数UDF示例
- 解决关于SQL2005注册连接SQL2000查看表值函数时的"属性QuoteIdentifierStatus不可用于UserDefinedFunction"[dbo].[函数名]"……”的提示
- Hive的内置函数和自定义函数UDF
- 1006-Hive的自定义UDF函数
- Hive总结(十一)Hive自定义函数UDF
- hive自定义函数UDF的使用方法
- hive自定义函数UDF
- hive----自定义UDF 函数-----时间格式化以及取出双引号的代码
- Hive数据仓库--UDF自定义函数以及其中的坑
- HIVE自定义UDF时,不写add jar 和 create temporary function