Hive自定义函数

简介: 关于Hive的自定义函数

实现UDTF的步骤:
-- 解析如上内容:

1. 自定义UDTF函数,继承于抽象类GenericUDTF;
2. 实现initialize, process,close 的三个方法;
3. 三个方法的作用说明:
   1. 'initialize()':
      a、规定形参的参数类型:Hive调用initialize()方法,来告诉UDTF函数接收参数的类型,然后在这个方法中就可以对参数的
      类型进行校验,参数类型包括个数、数据类型等等
      b、规定函数返回结果数据类型:返回initialize()方法必须返回一个与UDTF将生成的行对象对应的对象检查器   
   2. 'process()':
      a、调用时机:initialize()被调用以后,即对输入的数据进行了检查满足条件以后,执行这个方法
      b、作用:一行数据调用一次process方法,process方法的内部,会遍历这一行数据,如果是数组,那就遍历数组,遍历以后的
      一个元素,调用一次forward()方法,对数据进行输出。
   3. 'close()':
      a、调用时机:当hive中的所有行都通过了UDTF函数以后,则Hive会调用这个close方法
      b、作用:关闭资源。      

2.实现自定义UDF函数步骤
1)写一个类继承(org.apache.hadoop.hive.ql.)UDF类;
2)重写evaluate()方法;
3)打JAR包;
4)添加JAR到Hive的类路径:
hive> add jar /home/ubuntu/ToDate.jar;
5)注册函数:
hive> create temporary function xxx as ‘XXX’;
6)使用函数;

UDF(一进一出) UDAF(多进一出) UDAF(一进多出)
简单的数据类型(比如String、Integer)继承UDF
复杂的数据类型(比如Array、Map、Struct)继承GenericUDF,需要重写initialize、evaluate、 getDisplayString方法
3.实现自定义函数UDAF步骤:
引入如下两下类
import org.apache.hadoop.hive.ql.exec.UDAF

import org.apache.hadoop.hive.ql.exec.UDAFEvaluator

函数类需要继承UDAF类,计算类Evaluator实现UDAFEvaluator接口
Evaluator需要实现UDAFEvaluator的init、iterate、terminatePartial、merge、terminate 这几个函数。

   a)init函数实现接口UDAFEvaluator的init函数。
   b)iterate接收传入的参数,并进行内部的迭代。其返回类型为boolean。
   c)terminatePartial无参数,其为iterate函数遍历结束后,返回遍历得到的数据,terminatePartial类似于 hadoop的Combiner。
   d)merge接收terminatePartial的返回结果,进行数据merge操作,其返回类型为boolean。
   e)terminate返回最终的聚集函数结果。

f)将文件打包
g)创建临时函数

相关文章
|
4月前
|
SQL 存储 Java
Hive【Hive(八)自定义函数】
Hive【Hive(八)自定义函数】
|
4月前
|
SQL 存储 Java
Hive UDF UDTF UDAF 自定义函数详解
Hive UDF UDTF UDAF 自定义函数详解
79 2
Hive UDF UDTF UDAF 自定义函数详解
|
8天前
|
SQL JavaScript 前端开发
Hive根据用户自定义函数、reflect函数和窗口分析函数
Hive根据用户自定义函数、reflect函数和窗口分析函数
17 6
|
4月前
|
SQL 分布式计算 Java
Hive自定义函数UDF编写
Hive自定义函数UDF编写
69 2
|
10月前
|
SQL Java Shell
56 Hive自定义函数和Transform
56 Hive自定义函数和Transform
71 0
|
SQL JSON Oracle
Hive自定义函数与transform的使用
Hive自定义函数与transform的使用
100 0
|
SQL Java HIVE
[Hive]Hive自定义函数UDF
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/53244868 当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数 用户自定义函数(user defined function),针对单条记录。
3435 0
|
SQL 分布式计算 Java
Apache Hive--自定义函数 UDF 开发| 学习笔记
快速学习Apache Hive--自定义函数 UDF 开发
206 0
Apache Hive--自定义函数 UDF 开发| 学习笔记
|
SQL Java 数据挖掘
【Hive】(十二)Hive自定义函数详解(UDF、UDAF、UDTF)
【Hive】(十二)Hive自定义函数详解(UDF、UDAF、UDTF)
910 0
|
SQL Java Maven
Hive----自定义函数
自定义函数
118 0