2

我正在查询一个out_url具有原始 url 编码字段的配置单元表,例如:

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

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

为了解决这个问题,我正在做这个丑陋的双正则表达式替换,比如:

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

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

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

4

1 回答 1

11

这里似乎有一种使用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;
于 2013-03-18T10:59:13.123 回答