Hive URL解析
URL组成部分:协议类型+域名+访问路径+参数数据 例:https + : //blog.csdn.net + /pljnb + ?type=blog Hive提供了专门解析URL的函数:parse_url和parse_url_tuple
parse_url 函数
parse_url函数是Hive中提供的最基本的url解析函数,可以根据指定的参数,从URL解析出对应的参数值进行返回,函数为普通的一对一函数类型。 语法: 支持提取的部分:HOST,PATH,QUERY,REF,PROTOCOL,AUTHORITY,FILE,USERINFO key
parse_url( url, partToExtract[ , key ] )
SELECT parse_url( 'https://blog.csdn.net/pljnb?type=blog' , 'HOST' ) ;
parse_url_tuple 函数
parse_url_tuple函数是Hive中提供的基于parse_url的url解析函数,可以通过一次指定多个参数,从URL中解析出多个参数值返回多列。 该函数为一对多函数类型。 语法:
parse_url_tuple( url, partname1, partname2, . . . , partnameN)
SELECT parse_url_tulpe( url, "PROTOCOL" , "HOST" , "PATH" ) AS ( protocol, host, path) FROM tb_url;
parse_url_tuple 函数使用的注意事项
parse_url_tuple 是一种UDTF函数,在使用SELECT时不能同时返回其他字段,不能嵌套调用,不能与group by放在一起调用等。 为解决此问题,可以通过测试图(Lateral View)搭配调用。 例:
SELECT
a. id AS id,
b. host AS host,
b. path AS path,
c. query AS query
FROM tb_url a
LATERAL VIEW parse_url_tuple( url, "HOST" , "PATH" ) b AS host, path
LATERAL VIEW parse_url_tuple( url, "QUERY" ) c AS query
若UDTF不产生数据,则侧视图与原表关联的结果将为空 若使用OUTER关键字(LATERAL VIEW OUTER),则会保留原表数据,类似outer join。