在 PIG 中 tokenize 是如何工作的?

how tokenize works in PIG?

我在下面提到的文件中有一个数据

美国美国欧洲欧洲欧洲欧洲美国 美国 美国 欧洲 欧洲 美国 欧洲 美国

我正在尝试找出美国和欧洲的数量。

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)}

这个输出 smiliar 与 tokenize 定义有何相似之处..?

定义说 "split a string of words (all words in a single tuple)" INTO "a bag of words (each word in a single tuple)"

定义中的 INTO 词袋语句看起来与输出相似,但当我将输出与定义相关联时,无法理解定义中 "split a string of words (all words in a single tuple)" 的含义。

所有单词都在单个元组中..?

分词定义,"Use the TOKENIZE function to split a string of words (all words in a single tuple) into a bag of words (each word in a single tuple). The following characters are considered to be word separators: space, double quote("), coma(,) parenthesis(()), star(*).

有什么帮助...?

您需要使用 FLATTEN 和 TOKENIZE 来取消嵌套 bags/tuples。

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);