概述
一、自带
show functions
自带常用函数count,sum,max,min,avg,时间,trim,如果需要自定义,要用自定义的
二、自定义
https://blog.csdn.net/qq_32641659/article/details/89421696
note
{1} 自定义函数分3种
[1] UDF(User-Defined-Function) 一进一出
[2] UDAF(User- Defined Aggregation Funcation) 聚合函数,多进一出。count/max/min
[3] UDTF(User-Defined Table-Generating Functions); 一进多出,如split(),explode()
{2} UDF必须要有返回类型,可以返回null,但是返回类型不能为void
1. 创建UDF jar并上传到hdfs,hive的UDF分临时和永久,永久的必须上传到hdfs,临时的可以在某个节点的文件中
{1} 依赖
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.hive/hive-exec -->
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>
{2} 类
继承org.apache.hadoop.hive.ql.UDF
需要创建evaluate方法;这个方法不是实现也不是继承,但必须要有名字是evaluate的方法,evaluate支持重载;
package com.dc.hive;
import org.apache.hadoop.hive.ql.exec.UDF;
public class Lower extends UDF {
public String evaluate (final String s) {
if (s == null) {
return null;
}
return s.toLowerCase();
}
}
{3} 打成jar包上传到服务器任意位置,/opt/module/jars/udf.jar
2. 在hive的命令行窗口创建函数
{1} 添加jar
add jar /opt/module/datas/udf.jar;
{2} 创建临时函数与开发好的java class关联
create [temporary] function [dbname.]function_name AS class_name;
{3} 在hive的命令行窗口删除函数
[1] temporary只对当前窗口有效
Drop [temporary] function [if exists] [dbname.]function_name;
3. 此时即可在hql中使用自定义的函数
select ename, udf_lower(ename) lowername from emp;
4. 以上是创建临时函数,但实际中肯定用的是永久函数。
http://blog.itpub.net/29609890/viewspace-2157096/
最后
以上就是傲娇大门为你收集整理的hive-函数:自带和UDF一、自带二、自定义的全部内容,希望文章能够帮你解决hive-函数:自带和UDF一、自带二、自定义所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复