2

如何使用 Hive 脚本截断域“com”旁边的以下 URL。即你只有tube.com

    http://www.youtube.com/video/AiL6nL
    http://www.yahoo.com/video/Hhj9B2
    http://www.youtube.com/video/MpVHQ
    http://www.google.com/video/PGuTN
    http://www.youtube.com/video/VU34MI

可以这样截断吗?

4

5 回答 5

3

尝试

select split(url, '/')[0] from mytable

mytable您的表格在哪里,并且url是包含问题中采样数据的列。

于 2013-06-10T03:34:21.863 回答
2

使用 case 语句:

CASE WHEN parse_url((url), 'HOST') is NULL THEN url ELSE parse_url((url), 'HOST') END as parsed_url
于 2013-06-11T05:36:23.360 回答
2

我建议使用 Hive UDF:

parse_url(string urlString, string partToExtract [, string keyToExtract])

从 URL 返回指定的部分。partToExtract 的有效值包括 HOST、PATH、QUERY、REF、PROTOCOL、AUTHORITY、FILE 和 USERINFO。例如

parse_url(' http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1 ', 'HOST') 返回 'facebook.com'。此外,可以通过提供键作为第三个参数来提取 QUERY 中特定键的值,例如 parse_url(' http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1 ', 'QUERY ', 'k1') 返回 'v1'。

谢谢,迪诺

于 2013-06-10T07:23:34.593 回答
0

要同时处理“youtube.com/video/nvRuX9h2”和“probuilds.net”:

select split(concat(url,'/'), '/')[0] from mytable
于 2013-06-10T12:37:23.313 回答
0

从 table_name 中选择 parse_url_tuple(column_name,'HOST')

于 2015-01-11T11:51:12.837 回答