使用apache pig从url中提取主机名

时间:2015-11-24 19:57:35

标签: hadoop apache-pig

例如,

 url: https://pig.apache.org/docs/r0.14.0/func.html
 url: http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html

网址不仅限于上述示例。我想将主机名提取为:

 host_name : pig.apache.org

任何人都可以帮助我。

2 个答案:

答案 0 :(得分:3)

您实际上想要提取主机名,而不是域名。 pig.apache.org是主机名,apache.org是域名。

幸运的是,Pig的好人们写了一个UDF来做这件事。只需使用Host Extractor UDF:

host = FOREACH row GENERATE org.apache.pig.piggybank.evaluation.util.apachelogparser.HostExtractor(referer);

API文档可在以下位置找到: https://pig.apache.org/docs/r0.8.1/api/org/apache/pig/piggybank/evaluation/util/apachelogparser/HostExtractor.html

答案 1 :(得分:0)

听起来你要做的就是在每个url上运行一个正则表达式来提取主机名。这应该是这样的:

splt = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT(line,'.*\://(?:www.)?([^\/]+)',1))