例如,
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
任何人都可以帮助我。
答案 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))