2013-08-23 28 views
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; 

以上是我的腳本,我的樣本數據是有點像..REGEX_EXTRACT_ALL不起作用,爲什麼?

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

,我得到這個結果

(,0) 

我擡頭豬API,它說REGEX_EXTRACT_ALL將返回空元組如果模式不匹配,但顯然存在該模式。所以我想更簡單的任務..

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

,並試圖再次

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

,並再次我空的結果。

我不知道爲什麼這個簡單的東西不起作用,我做錯了什麼?

回答

0

嘗試

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

你需要使用 「()」 來表示你想要什麼。

對於你的情況下,

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

b將是一個元組('test')