猪:在GROUP之后拉出单个字段

时间:2011-10-13 20:10:49

标签: hadoop apache-pig

在PigLatin中,我想从我想要选择的记录中提取其他字段,因为汇总,例如MAX

我无法解释问题,所以这是一个例子。假设我想获取一个家庭中最老的人的名字:

关系A是四列,(name, address, zipcode, age)

B = GROUP A BY (address, zipcode); # group by the address

# generate the address, the person's age, but how do I grab that person's name?
C = FOREACH B GENERATE FLATTEN(group), MAX(age), ??? Name ???;

如何生成MAX年龄的人的姓名?

1 个答案:

答案 0 :(得分:4)

您的逻辑问题是MAX(年龄)可能超过1人。然后你必须GROUP BY(名字,地址,年龄)。但是为了给你一个快速回答,我会写出只有最大年龄之一。 (我不确定它是最佳方式)

C = FOREACH B {                          
   DA = ORDER A BY age DESC;                
   DB = LIMIT DA 1;                         
   GENERATE FLATTEN(group), FLATTEN(DB.age), FLATTEN(DB.name);
}