2017-10-12 85 views
0

这是一个基本的PIG问题。 我有我的数据是这样的PIG集团避免袋

10 | Dog 
15 | Cow 
20 | Dog 
15 | Elephant 
15 | Dog 
25 | Elephant 

我想要找的平均重量每只动物的,并具有输出,因为这:

Dog | 12.5 
Elephant | 20 
Cow | 15 

我能够通过使用GROUP和得到的结果,但结果是一个袋子,像这样:

{(Dog), (Dog) } | 12.5 
{(Elephant), (Elephant)} | 20 
{(Cow)} | 15 

我怎样才能提取个别动物?

我正在使用这样的GROUP。

--animal_weight is derived through other means 
animal_by = GROUP animal_weight by (animal); 
results = FOREACH animal_by GENERATE animal_weight.animal as animal_name, AVG(animal_weight.weight) as kg; 
STORE results INTO '$output_4' USING PigStorage('|'); 

回答

0

使用group代替animal_weight.animal。注意,从您的样本数据,狗应具有重的平均值(10 + 20 + 15)/ 3 =15公斤

results = FOREACH animal_by GENERATE group as animal_name, AVG(animal_weight.weight) as kg; 

输出

enter image description here

+0

谢谢!我刚刚想出了12.5,应该做的数学:-) – EnnioMorricone