Pig的python转座

vwkv1x7d  于 2021-06-25  发布在  Pig
关注(0)|答案(2)|浏览(170)

我在pig中有一个数据集,如下所示:

Name Class Subject Marks  
Andy 1     Maths    10  
John 1     Maths    20  
Mark 2     Maths    20  
Tony 2     Geo      30

但我需要把它改成:

Name Class Maths Geo  
Andy 1      10    0   
John 1      20    0   
Mark 2      20    0  
Tony 2      0    30

有人能给我建议如何在Pig身上做这个吗??另外,我正在尝试编写一个python脚本,它将获取数据并对其进行转置。提前感谢:)

oewdyzsn

oewdyzsn1#

按(姓名、班级)分组应该给你一个包,里面有一个学生的所有分数。然后您可以编写一个简单的udf,将这个包作为输入并生成所需的输出。

3qpi33ja

3qpi33ja2#

如果您的两个主题已经定义(我的意思是如果您的主题是静态的),您可以编写以下简单的代码来避免编写自定义项:

A = LOAD .... AS Name, Class, Subject, Marks ...; 

B = FOREACH A GENERATE (Subject == 'Maths' ? Marks : 0) AS Maths, (Subject == 'Geo' ? Marks : 0) AS Geo, class, Name;

如果要按名称和类聚合数据:

C = GROUP B BY (Name,class);

D = FOREACH C GENERATE group, sum(Maths) AS Maths, SUM(Geo) AS Geo;

E = FOREACH D GENERATE flatten(group), Maths, Geo;

当然,只有在定义了两个主题的情况下,此代码段才有效:)
罗曼。

相关问题