猪的每个循环中的正则表达式

时间:2013-11-06 14:29:21

标签: regex hadoop apache-pig

我目前正在使用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);

如果有人能提供帮助那就太棒了。

由于

1 个答案:

答案 0 :(得分:1)

有几件事:

  • 您错过了_
  • 中的regex_extract
  • 您需要指定论坛0
  • 这些点需要加双引号\\

data = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT(url,'(?:\\.)([^\\.]*\\.?[^\\.]*)$', 0));

这为.com

提供google.com