大数据技术架构(组件)16——Hive:内置UDTF函数

1.4.11、内置UDTF函数

1.4.11.1、explode

select explode(array(100,200,300));

Array<int> myCol

[100,200,300]

[400,500,600]

得到的结果如下:

(int) myNewCol

100

200

300

400

500

600

1.4.11.2、posexplode

select posexplode(array('A','B','C'));

1.4.11.3、parse_url_tuple

select parse_url_tuple('http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1','HOST', 'PATH', 'QUERY', 'QUERY:id');

1.4.11.5、inline

select inline(array(struct('A',10,date '2015-01-01'),struct('B',20,date '2016-02-02')));

1.4.11.6、stack

select stack(2,'A',10,date '2015-01-01','B',20,date '2016-01-01');

1.4.11.7、json_tuple

select json_tuple('{"a":1,"b":2}','a','b','c');

返回值类型

函数名称

功能描述

T

explode(ARRAY<T> a)

将数组分解为多行。返回具有单列 (col) 的行集,数组中的每个元素对应一行。

Tkey,Tvalue

explode(MAP<Tkey,Tvalue> m)

将map分解为多行。返回一个包含两列 (key,value) 的行集,输入映射中的每个键值对对应一行。 (从 Hive 0.8.0 开始。),炸裂

int,T

posexplode(ARRAY<T> a)

使用 int 类型的附加位置列(原始数组中项目的位置,从 0 开始)将数组分解为多行。返回一个包含两列 (pos,val) 的行集,数组中的每个元素占一行,其实就是带有序号的explode功能

T1,...,Tn

inline(ARRAY<STRUCT<f1:T1,...,fn:Tn>> a)

将一个结构数组分解为多行。返回一个有N列的行集(N=结构中顶级元素的数量),每个结构在数组中都有一行。(从Hive 0.10开始)

T1,...,Tn/r

stack(int r,T1 V1,...,Tn/r Vn)

将 n 个值 V1,...,Vn 分解为 r 行。每行将有 n/r 列。 r 必须是常数

string1,...,stringn

json_tuple(string jsonStr,string k1,...,string kn)

接受 JSON 字符串和一组 n 个键,并返回 n 个值的元组。这是 get_json_object UDF 的更高效版本,因为它可以通过一次调用获取多个键。

string 1,...,stringn

parse_url_tuple(string urlStr,string p1,...,string pn)

获取 URL 字符串和一组 n 个 URL 部分,并返回一个包含 n 个值的元组。这类似于 parse_url() UDF,但可以一次从 URL 中提取多个部分。有效的部分名称为:HOST、PATH、QUERY、REF、PROTOCOL、AUTHORITY、FILE、USE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mylife512

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值