hive内置函数_hive中的内置函数parse_url_tuple() 和内置函数 lateral view和 parse_url

hive中的内置函数parse_url_tuple() 和内置函数 lateral view

1.parse_url ()

解析URL字符串,partToExtract的选项包含[HOST,PATH,QUERY,REF,PROTOCOL,FILE,AUTHORITY,USERINFO]。

【host,path,query,ref,protocol,file,authority,userinfo】这些可以理解为关键字 通过关键字可以获得url中对应的字段数据。

parse_url_tuple功能类似parse_url(),但它可以同时提取多个部分并返回

举例 :

select parse_url(‘http://facebook.com/path/p1.php?query=1’, ‘PROTOCOL’) from dual; --http

select parse_url(‘http://facebook.com/path/p1.php?query=1’, ‘HOST’) from dual;—facebook.com​

select parse_url(‘http://facebook.com/path/p1.php?query=1’, ‘REF’) from dual;—空​

select parse_url(‘http://facebook.com/path/p1.php?query=1’, ‘PATH’) from dual;—/path/p1.php​

select parse_url(‘http://facebook.com/path/p1.php?query=1’, ‘QUERY’) from dual;—空​

​select parse_url(‘http://facebook.com/path/p1.php?query=1’, ‘FILE’) from dual;​—/path/p1.php?query=1​

​select parse_url(‘http://facebook.com/path/p1.php?query=1’, ‘AUTHORITY’) from dual;​—facebook.com​

​select parse_url(‘http://facebook.com/path/p1.php?query=1’, ‘USERINFO’) from dual;​—空

select parse_url(‘http://facebook.com/path/p1.php?query=1&name=3’, ‘QUERY’,‘name’)

select parse_url(‘http://facebook.com/path/p1.php?query=1&name=3’, ‘QUERY’’)

2.lateral view 是将右边的表或者结果合并到左边表 和左边表整合成一张表。

举例:

2.1.相当于拓展ods_weblog_origin表中的 http_referer字段 【原始表(左边表数据字段保持不变 新增拓展字段 并将原始表数据 导入新表中)】

create table t_ods_tmp_referurl as

SELECT a.,b.

FROM ods_weblog_origin a

LATERAL VIEW parse_url_tuple(regexp_replace(http_referer, “”", “”), ‘HOST’, ‘PATH’,‘QUERY’, ‘QUERY:id’) b as host, path, query, query_id;

2.2 相当于拓展ods_weblog_origin表中的time_local字段 并将原始表数据添加到新表 as select(查询添加))

–抽取转换time_local字段到中间表明细表 t_ods_tmp_detail

drop table if exists t_ods_tmp_detail;

create table t_ods_tmp_detail as

select b.*,substring(time_local,0,10) as daystr,

substring(time_local,12) as tmstr,

substring(time_local,6,2) as month,

substring(time_local,9,2) as day,

substring(time_local,11,3) as hour

From t_ods_tmp_referurl b;

2.3 是将原始表中的 url 和时间字段拓展 构成一张明细表 并查询填充数据

以上语句可以改写成:

insert into table ods_weblog_detail partition(datestr=‘20130918’)

select c.valid,c.remote_addr,c.remote_user,c.time_local,

substring(c.time_local,0,10) as daystr,

substring(c.time_local,12) as tmstr,

substring(c.time_local,6,2) as month,

substring(c.time_local,9,2) as day,

substring(c.time_local,11,3) as hour,

c.request,c.status,c.body_bytes_sent,c.http_referer,c.ref_host,c.ref_path,c.ref_query,c.ref_query_id,c.http_user_agent

from

(SELECT

a.valid,a.remote_addr,a.remote_user,a.time_local,

a.request,a.status,a.body_bytes_sent,a.http_referer,a.http_user_agent,b.ref_host,b.ref_path,b.ref_query,b.ref_query_id

FROM ods_weblog_origin a LATERAL VIEW parse_url_tuple(regexp_replace(http_referer, “”", “”), ‘HOST’, ‘PATH’,‘QUERY’, ‘QUERY:id’) b as ref_host, ref_path, ref_query, ref_query_id) c;

3.parse_url_tuple() 。

语法: parse_url(string urlString, string partToExtract [, string keyToExtract]),parse_url_tuple功能类似parse_url(),但它可以同时提取多个部分并返回

返回值: string

说明:返回URL中指定的部分。partToExtract的有效值为:HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO.

举例:

hive> select parse_url(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1′, ‘HOST’) from dual;

facebook.com

hive> select parse_url_tuple(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1’, ‘QUERY:k1’, ‘QUERY:k2’);

v1 v2

技术交流群 获得一个不错的连接 :https://www.twblogs.net/a/5b80dfed2b71772165a9de1a/zh-cn

————————————————

版权声明:本文为CSDN博主「zengxianglei」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/zengxianglei/article/details/89969144

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值