猪脚本循环虽然可以计算平均值

时间:2018-10-26 04:16:02

标签: apache-pig amazon-emr

我有将使用aws emr在猪中运行的数据。这些列称为型号,年份,单位已售出,总计客户。

chevy     1900     1000    49
chevy     1901     73      92
chevy     1902     45      65
chevy     1903     300     75
ford      1900     35      12
ford      1901     777     32
ford      1902     932     484
ford      1903     33      15

我想做的是计算每种车型的平均值。将通过将units_sold的总和除以total_customers的总和来计算平均值。 所以所需的结果看起来像

chevy    (1000+73+45+300) / (49+92+65+75) = 5.04
ford     (35+777+932+33) / (12+32+484+15) = 3.27

我的脚本中有

A = *Step to load data*;
B = GROUP A by year;
C = results = FOREACH B GENERATE SUM(units_sold)/SUM(total_customers);
dump C;

这将返回错误的结果。如何获得类似结果的结果

chevy    5.04
ford     3.27

1 个答案:

答案 0 :(得分:1)

看起来您需要按汽车类型而不是年份分组。另外,如果您不希望舍入结果,则如果units_soldtotal_customers是整数,则可能需要强制转换为浮点数。试试:

B = GROUP A by model;
C = FOREACH B GENERATE (float)SUM(units_sold)/(float)SUM(total_customers);