2016-04-29 63 views
2

下面的豬腳本給出了文件中各種字符的計數。它適用於除','以外的所有字符。如何匹配PIG中的','?

我的代碼:

A = load 'a.txt'; 
B = foreach A generate flatten(TOKENIZE((chararray)$0)) as word; 
C = filter B by word matches '(.+)'; 
D = foreach C generate flatten(TOKENIZE(REPLACE(word,'','|'), '|')) as letter; 
E = group D by letter; 
F = foreach E generate COUNT(D), group; 
store F into 'pigfiles/wordcount'; 

這所有字符匹配除了 '' 並給出了一個輸出。

輸入:(貓A.TXT)

HI, I. 

輸出:(生成文件輸出)

1 H 
2 I 
1 . 

它不給的,計數的文件中。我不明白爲什麼它沒有給出計數','

+1

也許[這](http://www.crackinghadoop.com/hadoop-pig-loading-files-with-quotes-and-comma-delimiters/)會幫助你。 –

+0

@TimBiegeleisen嘗試過,但仍然不匹配'',' –

+0

@AniMenon如果回答您的問題,請接受答案。 –

回答

0

第一個標記大小將消除標記分隔符空間,雙引號(「),昏迷(,)括號(()),星號(*),而是使用替換標記每個字符,然後進行計數。參見下面的

輸入

HI, I. 

PigScript

A = LOAD 'test3.txt'; 
B = FOREACH A GENERATE FLATTEN(TOKENIZE(REPLACE((chararray)$0,'','|'), '|')) AS letter; 
C = FILTER B BY letter != ' '; 
D = GROUP C BY letter; 
E = FOREACH D GENERATE COUNT(C.letter), group; 
DUMP E; 

輸出

Output