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

extract host name from url using 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

URL不仅仅局限于上面的例子。我想将主机名提取为:

 host_name : pig.apache.org

谁能帮帮我

听起来您正在尝试做的是 运行 每个 url 上的正则表达式以提取主机名。这应该是这样的:

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

您实际上是想提取主机名,而不是域名。 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