0
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,它说如果模式不匹配,REGEX_EXTRACT_ALL 将返回空元组,但显然存在该模式。所以我尝试了更简单的任务..

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

也试过

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

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

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

4

1 回答 1

0

尝试

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

您需要使用“()”来表示您想要什么。

对于你的情况,

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

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

于 2013-08-23T09:53:52.287 回答