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(),但它能夠同時提取多個部分並返回php
舉例 :
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;—空web
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’’)url
2.lateral view 是將右邊的表或者結果合併到左邊表 和左邊表整合成一張表。.net
舉例:
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_detailregexp
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;blog
3.parse_url_tuple() 。rem
語法: 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;string
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