在Hadoop Hive中解码原始URL,更喜欢非Java解决方案

Idr*_*Idr 2 hadoop hive

我正在查询out_url具有原始URL编码的字段的hive表,如:

http%3A%2F%2Fwww.example.com%2Findex.php%3Fpage%3D260%26id%3D22

我想只提取域,如果url不是原始编码的话,那就可以使用`parse_url(out_url,'HOST').

为了解决这个问题,我正在做这个丑陋的双regexp替换,如:

parse_url(regexp_replace(regexp_replace(out_url, '%3A', ':'), '%2F', '/'), 'HOST')

转换为%3Ato :%2Fto /然后提取域.我知道我可以写一个Java UDF来做这件事,但这对我来说不是一个很好的选择,因为我目前主要是编写Java.

想法?是否可以编写Python UDF?

ben*_*uin 10

这里似乎有一种简单的方法,使用Java反射:http://mail-archives.apache.org/mod_mbox/hive-user/201109.mbox/%3C15C962F3417BF94ABEAB2314AF92A16A1FF9CE@SVR-PR-MB2.cb.careerbuilder.com% 3E

SELECT reflect("java.net.URLDecoder", "decode", field_name) FROM table;
Run Code Online (Sandbox Code Playgroud)

  • 对不起.我的理解是你不想写Java,但你会同意使用Java代码(你只需要在你的hive查询中复制一行). (5认同)