REGEX_EXTRACT_ALL无法正常工作,为什么?

时间:2013-08-23 09:14:52

标签: regex hadoop apache-pig

a = load '/text.log' using TextLoader() as line:chararray;
b = foreach a generate REGEX_EXTRACT_ALL(line,'projectVersion:[^\t]*');
c = group b by $0;
d = foreach c generate group, COUNT(b);
dump d;

以上是我的脚本,我的样本数据有点像..

projectName:test    logType:test    logSource:test  logBody:test

我得到了这个结果

(,0)

我查了Pig API,它说如果pattern不匹配,REGEX_EXTRACT_ALL将返回空元组,但显然存在该模式。所以我尝试了更简单的任务..

b = foreach a generate REGEX_EXTRACT_ALL(line,'projectVersion');

并尝试了

b = foreach a generate REGEX_EXTRACT_ALL(line,'p');

我一次又一次地得到空洞的结果。

我不知道为什么这个简单的东西不起作用,我做错了什么?

1 个答案:

答案 0 :(得分:0)

尝试

b = foreach a generate REGEX_EXTRACT_ALL(line,'projectVersion:([^\t]*)');

您需要使用“()”来表示您想要的内容。

对于你的情况,

projectName:test    logType:test    logSource:test  logBody:test

b将有一个元组('test')