Hive UDTF and LateralView

来源:互联网 发布:java培训大纲 编辑:程序博客网 时间:2024/05/17 10:40

UDTF在使用过程中的一些限制:

1. 在select语句中不能有其他表达式,例如SELECT   pageid,   explode(adid_list )  AS myCol. . . 这种语句是不支持的

2. UDTF不能嵌套使用,例如:SELECT   explode(explode(adid_list ))  AS myCol. . . 这种语句也是不支持的

3. GROUP BY CLUST ER BYDI ST RI BUT E BYSORT BY是不支持的,例如:SELECT   explode(adid_list )  AS myCol  . . .  GROUP  BY myCol这种语句是不支持的

LateralView

LateralView是和UDTF结合使用的。LateralView首先对于表格的每一行应用UDTF,然后将UDTF产生的结果与UDTF的输入行进行拼接。

LaterView的例子:

select  column,column,column,column,......from table lateral view udtf(arg,arg,arg,arg,......)  aliasTabel as  column,column,column,...;

UDTF的编写步骤:

1.在initialize()函数中进行预处理,该函数传入的参数是ObjectInspector[],用来检查自定义函数传入的参数;

真正的处理过程在process函数中,在process中,每一次forward()调用产生一行;如果产生多列可以将多个列的值放在一个数组中,然后将该数组传入到forward()函数。

原创粉丝点击