apache-pig - 猪脚本循环虽然计算平均值
问题描述
我有将使用 aws emr 在 pig 中运行的数据。这些列称为模型、年份、units_sold、total_customers。
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
解决方案
看起来您需要按汽车类型而不是年份分组。此外,如果您不想要一个四舍五入的结果,您可能需要转换为 float ifunits_sold
和are integers。total_customers
尝试:
B = GROUP A by model;
C = FOREACH B GENERATE (float)SUM(units_sold)/(float)SUM(total_customers);
推荐阅读
- java - 从firebase获取列表时,特定值仅显示在一个recyclerview项目中,而不显示在列表中显示的其他项目中
- swift - 在 watchOS 5.2 崩溃时找不到适合组合的图像
- html - 字体真棒图标显示一个框
- bash - 使用 `{` 和 `}` 语法的 Bash 多行
- c# - 如何使用键和值循环所有类变量
- haskell - 使用 cabal v2-install 构建可执行文件时冻结所有依赖项
- python - Python Bokeh 可能的错误,仅显示最后一个图
- c++ - 有没有办法在 C++ 中制作无锁“计数器”随机访问迭代器?
- php - 如何获取从 laravel foreach 返回的数组而不是 json 数组?
- javascript - 如何检查一个dom元素是否超过另一个?