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

Don*_*ner 3 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 ???;
Run Code Online (Sandbox Code Playgroud)

我如何生成带有MAX年龄的人的名字?

fra*_*ail 5

您的逻辑问题是 MAX(age) 的人数可能超过 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);
}
Run Code Online (Sandbox Code Playgroud)