如何执行Group然后在pig

时间:2016-11-01 16:26:57

标签: hadoop apache-pig

我刚开始学习PIG,需要对以下问题提供小帮助。提前谢谢!
例如:我输入如下:

职业类别名称

Actress       Acting     Marion Cotillard
Actor         Acting     Liam Nelson
Tennis Plyr   Athletics  Roger Federer
Football Plyr Athletics  Neymar
Actor         Acting     Tom Hanks
Actress       Acting     Elizabeth Banks
US Senator    Politics   Elizabeth Warren
Football Plyr Athletics  Mesut Ozil

我想知道单一类别中有多少种类型。 例如: - 表演有两种类型,一种是女演员,另一种是演员。因此,结果将是2。 面临的问题:无法通过类别'来区分'组的输出。使用'职业'柱。 :(

2 个答案:

答案 0 :(得分:2)

试试这个:

x= load '<data>' using PigStorage('\t') as (occupation:chararray,category:chararray,name:chararray);

 x_grouped= group x by category;

x_grouped_distinct= foreach x_grouped { cat= distinct $1.occupation; generate $0, cat, COUNT(cat);}; 

dump x_grouped_distinct;

答案 1 :(得分:1)

先区分,然后按类别分组。假设您已将数据加载到关系A中。

加载后选择2列。

区分关系

按类别分组

计算每个类别的职业

B = FOREACH A GENERATE Occupation as Occupation,Category as Category;
C = DISTINCT B;
D = GROUP C BY $1; 
E = FOREACH D GENERATE group,COUNT(C.Occupation); 
DUMP E;

Output

相关问题