2017-06-10 28 views
0

我在下面標記如何在PIG中起作用?

提到文件的數據美國美國歐洲歐洲美國 美國美國歐洲美國 EUROPE美國

我試圖找出美國和歐洲的數量。

1) inp = LOAD '/user/countries.txt' as (singleline); 
dump inp; 

Output 

(USA USA EUROPE EUROPE EUROPE EUROPE USA) 
(USA USA EUROPE EUROPE USA) 
(EUROPE USA) 

Is this output in tuple...? 

2) tknz = FOREACH inp GENERATE TOKENIZE(singleline) as Col_Words; 
dump tknz; 

Output 

{(USA),(USA),(EUROPE),(EUROPE),(EUROPE),(EUROPE),(USA)} 
{(USA),(USA),(EUROPE),(EUROPE),(USA)} 
{(EUROPE),(USA)} 

這個輸出如何類似於標記化定義..?

認定中說:「分開單詞的字符串(在一個元組的所有單詞)」變成「字樣的袋子(在一個元組的每個字)」

進言言的袋子中定義看起來相似與輸出相關,但當我將輸出與定義關聯時,我無法捕捉到「將一串單詞(單個元組中的所有單詞)分割」的含義。

所有單詞都在單個元組中..?

Tokenize定義「使用TOKENIZE函數將單詞串(單個元組中的所有單詞)拆分爲一包單詞(單個元組中的每個單詞)以下字符被認爲是單詞分隔符:空間,雙引號( 「),昏迷()括號​​(()),星號(*)。」

任何幫助......?

回答

0

您需要使用FLATTEN與記號化到UNNEST袋/元組。

tknz = FOREACH inp GENERATE FLATTEN(TOKENIZE(singleline)) as Col_Words; 
tknz_group = GROUP tknz ALL; 
tknz_count = FOREACH tnnz_group GENERATE group,COUNT(tknz.Col_Words);