hive自定义UDTF函数,步骤讲解

如题所述

第1个回答  2022-07-30

UDTF(User-Defined Table-Generating Functions)是一进多出函数,如hive中的explode()函数。
在学习自定义UDTF函数时,一定要知道hive中的UDTF函数如何使用,不会的先看这篇文章: hive中UDTF函数explode详解 + explode与lateral view 3套案例练习 。

自定义函数、实现UDTF一进多出功能,我们主要关心的是要继承什么类,实现什么方法。
1)继承 org.apache.hadoop.hive.ql.udf.generic.GenericUDTF 类
2)重写 initialize、process、close 方法

继承GenericUDTF抽象类时,我们需要重写 initialize 方法、并实现2个抽象方法 (process、close) .
在Alt + Enter回车时,只提示我们实现两个方法抽象方法 process、close 。 initialize方法 不是抽象方法不用实现,但是该方法 需要重写 ,不然会报错。

initialize方法是针对整个任务调一次,initialize作用是 定义输出字段的列名、和输出字段的数据类型 ,重写该方法时里面有一些知识点需要我们记

process方法是 一行数据调用一次process方法 ,即 有多少行数据就会调用多少次process方法 。主要作用是对传入的 每一行数据写出去多次 ,调用forward()将数据写入到一个缓冲区。

有2个点需要记住:

这里没有io流的操作所以不需要关闭。

关于是否有IO流以及是否关闭IO流不清楚。

最后文章里面,还有很多描述不清楚的地方,以及我不明白的地方,大家也可以去看看其他的文章。

相似回答