我目前正在使用UDF来获取输出,但是正则表达式会做同样的事情并且可能更快!
我在使用pig运行代码时出现问题,这是我尝试运行的代码行。
data = FOREACH f GENERATE FLATTEN(REGEX EXTRACT(col4,'(?:\.)([^\.]*\.?[^\.]*)$')) AS (url:chararray) ;
这行代码会出现错误语法错误,意外符号位于'('
附近)正则表达式的工作方式是获取google.co.uk并返回.co.uk,google.com将返回.com 点击此处:http://gskinner.com/RegExr/?372tm
然后我的想法是按照tld的数量来计算。例如3 co.uk
countURL = group data by url;
result = foreach countURL generate group, COUNT($1);
如果有人能提供帮助那就太棒了。
由于
答案 0 :(得分:1)
有几件事:
_
regex_extract
0
\\
data = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT(url,'(?:\\.)([^\\.]*\\.?[^\\.]*)$', 0));
这为.com
google.com