hive函数中的operators, UDF, UDAF, UDTF

栏目: 服务器 · 发布时间: 5年前

内容简介:=, !=, <, >, IS NULL, ...+, -, *, /, ...AND, OR, IN, ...

operators

=, !=, <, >, IS NULL, ...

+, -, *, /, ...

AND, OR, IN, ...

UDF(User Defined Functions)

hive内置的udf函数 (1 -> 1): **

math: round, floor, ceil, exp, log, ...

date: to_date, from_unixtimestamp, ...

conditional: if, isnull, case, coalsce, ...

string: char, concat, lower, trim, repeat, ...

自定义的UDF实现方法:

  1. 继承UDF类
  2. 重写evaluate方法
  3. 将该 java 文件编译成jar

UDAF(User Defined Aggregate Functions)

hive内置的udaf函数 (n -> 1):

count, sum, min, max, corr, ....

自定义的UDAF实现方法:

1,用户的UDAF必须继承了org.apache.hadoop.hive.ql.exec.UDAF;

2,用户的UDAF必须包含至少一个实现了org.apache.hadoop.hive.ql.exec的静态类,诸如实现了 UDAFEvaluator

3,一个计算函数必须实现的5个方法的具体含义如下:

init():主要是负责初始化计算函数并且重设其内部状态,一般就是重设其内部字段。一般在静态类中定义一个内部字段来存放最终的结果。

iterate():每一次对一个新值进行聚集计算时候都会调用该方法,计算函数会根据聚集计算结果更新内部状态。当输 入值合法或者正确计算了,则 就返回true。

terminatePartial():Hive需要部分聚集结果的时候会调用该方法,必须要返回一个封装了聚集计算当前状态的对象。

merge():Hive进行合并一个部分聚集和另一个部分聚集的时候会调用该方法。

terminate():Hive最终聚集结果的时候就会调用该方法。计算函数需要把状态作为一个值返回给用户。

UDTF(User Defined Tabular Functions)

hive内置的udtf函数 (1 -> n):

explode, posexplode, parse_url_tuple, ...

自定义的实现方法:

  1. 继承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF

2.initialize():UDTF首先会调用initialize方法,此方法返回UDTF的返回行的信息(返回个数,类型)

3.process:初始化完成后,会调用process方法,真正的处理过程在process函数中,在process中,每一次forward() 调用产生一行;如果产生多列 可以将多个列的值放在一个数组中,然后将该数组传入到forward()函数

4.最后close()方法调用,对需要清理的方法进行清理

PTF(Partitioned table Function, Window Functions)

hive内置的ptf函数 (n -> m):

ROW_NUMBER(), RANK(), DENSE_RANK()

ROW_NUMBER() : 给分区每一行分别编号

hive函数中的operators, UDF, UDAF, UDTF

RANK() :分区排名

hive函数中的operators, UDF, UDAF, UDTF

DENSE_RANK() : 分区排名(紧密连续的名次)

hive函数中的operators, UDF, UDAF, UDTF

e.g.

hive函数中的operators, UDF, UDAF, UDTF

Usage

hive> show functions;

hive> desc function funcName;

hive> desc function extended funcName; // describe function with some example

customize:

  1. develop UD[.*]F
  2. compile to *.jar
  3. deploy to cluster

hive> add jar /path/to/lib.jar;

hive> create temporary function xxxx as "java.class.name";

hive> select xxxx(...) ...;

hive> drop temporary function xxxx;


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

数字麦克卢汉

数字麦克卢汉

(美)保罗﹒莱文森(Paul Levinson) / 何道宽 / 社会科学文献出版社 / 2001年 / 20.0

本书是一本三合一的书。既是麦克卢汉评传,又是一部专著,而且是让网民“扫盲”和提高的指南。 《数字麦克卢汉》实际上有两个平行的主题和任务。一个是批评和张扬麦克卢汉。另一个是写作者自己的思想。它“不仅谋求提供进入数字时代的向导……而且谋求证明麦克卢汉思想隐而不显的准确性。为了完成这个双重任务,本书的每一章都试图阐明麦克卢汉的一种重要的洞见、原则或概念。与此同时,它试图揭示麦克卢汉告诉我们一些什么......一起来看看 《数字麦克卢汉》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具