如何在PIG中使用tokenize?

时间:2017-06-10 14:34:26

标签: hadoop apache-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)}

这个输出如何变得类似于标记化定义..?

定义说"分割一串单词(单个元组中的所有单词)" INTO"一包单词(单个元组中的每个单词)"

INTO一个单词语句在定义中看起来与输出类似,但是我无法理解"分割一串单词(单个元组中的所有单词)"当我将输出与定义联系起来时的定义。

所有单词都在单元组中。?

Tokenize定义,"使用TOKENIZE函数将一串单词(单个元组中的所有单词)分成一个单词包(单个元组中的每个单词)。以下字符被视为单词分隔符:空格,双引号("),逗号(,)括号(()),星号(*)。"

任何帮助......?

1 个答案:

答案 0 :(得分:0)

您需要使用带有TOKENIZE的FLATTEN来取消行李/元组。

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