9-2.hive函数

hive函数

内置函数

hive操作复杂类型

9-2.hive函数_第1张图片

 

自定义函数

自定义函数包括三种UDF、UDAF、UDTF

UDF(User-Defined-Function) 一进一出

UDAF(User- Defined Aggregation Funcation) 聚集函数,多进一出。Count/max/min

UDTF(User-Defined Table-Generating Functions) 一进多出,如lateral view explore()

使用方式 :

在HIVE会话中add 自定义函数的jar文件,然后创建function继而使用函数

UDF 开发

1、UDF函数可以直接应用于select语句,对查询结构做格式化处理后,再输出内容。

2、编写UDF函数的时候需要注意一下几点:

a)自定义UDF需要继承org.apache.hadoop.hive.ql.UDF。

b)需要实现evaluate函数,evaluate函数支持重载。

3、步骤

a)把程序打包放到目标机器上去;

b)进入hive客户端,添加jar包:hive>add jar /run/jar/udf_test.jar;

c)创建临时函数:hive>CREATE TEMPORARY FUNCTION add_example AS 'hive.udf.Add';

d)查询HQL语句:

SELECT add_example(8, 9) FROM scores;

SELECT add_example(scores.math, scores.art) FROM scores;

SELECT add_example(6, 7, 8, 6.8) FROM scores;

e)销毁临时函数:hive> DROP TEMPORARY FUNCTION add_example;

UDAF开发

多行进一行出,如sum()、min(),用在group by时

1.必须继承

org.apache.hadoop.hive.ql.exec.UDAF(函数类继承)

org.apache.hadoop.hive.ql.exec.UDAFEvaluator(内部类Evaluator实现UDAFEvaluator接口)

2.Evaluator需要实现 init、iterate、terminatePartial、merge、terminate这几个函数

init():类似于构造函数,用于UDAF的初始化

iterate():接收传入的参数,并进行内部的轮转,返回boolean

terminatePartial():无参数,其为iterate函数轮转结束后,返回轮转数据,类似于hadoop的Combiner

merge():接收terminatePartial的返回结果,进行数据merge操作,其返回类型为boolean

terminate():返回最终的聚集函数结果

开发一个功能同:

Oracle的wm_concat()函数

Mysql的group_concat()

你可能感兴趣的:(大数据,人工智能,互联网,hive,大数据,大数据学习,大数据开发,大数据分析)