hvie url 解析函数

hive outline

链接

对以下数据建表:tb_url

1	http://facebook.com/path/p1.php?query=1
2	http://tongji.baidu.com/news/index.jsp?uuid=frank
3	http://www.jdwz.com/index?source=baidu
4	http://www.itcast.cn/index?source=alibaba

hive parse_url

该函数属于UDF类型

语法:

parse_url(url, partToExtract[, key]) - extracts a part from a URL
  Parts: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO key 

需求:实现对URL进行分析,从URL中获取每个ID对应HOST、PATH以及QUERY

idurl
1http://facebook.com/path/p1.php?query=1
2http://tongji.baidu.com/news/index.jsp?uuid=frank
3http://www.jdwz.com/index?source=baidu
4http://www.itcast.cn/index?source=alibaba
select id,
       parse_url(url, "HOST")  as host,
       parse_url(url, "PATH")  as path,
       parse_url(url, "QUERY") as query
from tb_url;
idhostpathquery
1facebook.com/path/p1.phpquery=1
2tongji.baidu.com/news/index.jspuuid=frank
3www.jdwz.com/indexsource=baidu
4www.itcast.cn/indexsource=alibaba

注意:使用parse_url函数每次只能解析一个参数,导致构建多列需要调用多次该函数,我们希望能实现调用一次函数,就可以将多个参数进行解析,得到多列结果。parse_url_tuple可以实现该效果

hive parse_url_tuple

该函数属于UDTF类型(常结合lateral view侧视图)

语法:

parse_url_tuple(url, partname1, partname2, ..., partnameN) - extracts N (N>=1) parts from a URL.
It takes a URL and one or multiple partnames, and returns a tuple. All the input parameters and output column types are string.
Partname: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO, QUERY:<KEY_NAME>
parse_url在使用时可以指定多个参数
第一个参数:url:指定要解析的URL
第二个参数:key1:指定要解析的内容1
……
第N个参数:keyN:指定要解析的内容N
select a.id,
       b.host,
       b.path,
       b.query
from tb_url a lateral view parse_url_tuple(url, "HOST", "PATH", "QUERY") b as host, path, query;
idhostpathquery
1facebook.com/path/p1.phpquery=1
2tongji.baidu.com/news/index.jspuuid=frank
3www.jdwz.com/indexsource=baidu
4www.itcast.cn/indexsource=alibaba
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值