Apache pig 通过pig脚本计算平均值

Apache pig 通过pig脚本计算平均值,apache-pig,Apache Pig,这里我试图计算按城市分组的项目的平均值 错误:计算平均值时出错 有人能帮我纠正这个错误吗 注意:由于sales.txt有50个字段,以逗号分隔,因此我不想在将sales.txt加载到关系本身时为所有字段定义架构。可能您的数据包含一些缺少的值,请先尝试按如下方式对其进行筛选: /*calculating average for itemssold(int) grouped by city */ a = LOAD 'sales.txt' USING PigStorage(','); /*loadi

这里我试图计算按城市分组的项目的平均值

错误:计算平均值时出错

有人能帮我纠正这个错误吗


注意:由于sales.txt有50个字段,以逗号分隔,因此我不想在将sales.txt加载到关系本身时为所有字段定义架构。

可能您的数据包含一些缺少的值,请先尝试按如下方式对其进行筛选:

/*calculating average for itemssold(int) grouped by city */

a = LOAD 'sales.txt' USING PigStorage(','); /*loading sales data and it has 50 fields that are comma separated*/ 
b = FOREACH a GENERATE $3 as city:chararray, $4 as itemssold:int;/*defining schema for needed fields*/
c = GROUP b BY city; /*grouping by city*/
d = FOREACH c GENERATE group,AVG(b.itemssold); /*calculating average*/
dump d; /*writing output*/

可能您的数据包含某些缺少的值,请先尝试按如下方式对其进行筛选:

/*calculating average for itemssold(int) grouped by city */

a = LOAD 'sales.txt' USING PigStorage(','); /*loading sales data and it has 50 fields that are comma separated*/ 
b = FOREACH a GENERATE $3 as city:chararray, $4 as itemssold:int;/*defining schema for needed fields*/
c = GROUP b BY city; /*grouping by city*/
d = FOREACH c GENERATE group,AVG(b.itemssold); /*calculating average*/
dump d; /*writing output*/
上述代码有效。在关系b GENERATE中,我试图定义模式而不是强制转换,因此pig感到困惑。现在纠正了&它起作用了。谢谢大家的建议


上述代码有效。在关系b GENERATE中,我试图定义模式而不是强制转换,因此pig感到困惑。现在纠正了&它起作用了。谢谢大家的建议

dump b是什么样子的?列索引从$0开始。您确定city和itemssold是数据文件中的第4列和第5列吗。dump b;下面是芝加哥,12达拉斯,20亚特兰大,22芝加哥,23亚特兰大,12达拉斯,87。。。。。等等。是的,我知道索引从$0位置开始。他们分别排在第四和第五位;d=每个c生成b.city,平均值(b.itemssold);dump b是什么样子的?列索引从$0开始。您确定city和itemssold是数据文件中的第4列和第5列吗。dump b;下面是芝加哥,12达拉斯,20亚特兰大,22芝加哥,23亚特兰大,12达拉斯,87。。。。。等等。是的,我知道索引从$0位置开始。他们分别排在第四和第五位;d=每个c生成b.city,平均值(b.itemssold);
a = LOAD 'sales.txt' USING PigStorage(',');
b = FOREACH a GENERATE (chararray) $3 as city, (int) $4 as itemssold;
c = GROUP b BY city; 
d = FOREACH c GENERATE group,AVG(b.itemssold); 
dump d;