pig计算平均延迟失败

mzillmmw  于 2021-06-21  发布在  Pig
关注(0)|答案(2)|浏览(265)

我有一个飞机数据文件,有飞机目的地和延迟(延迟可以是负数或正数)

A = load ‘flightdelays’ using Pigstorage(‘,’);
B = foreach a generate $14 as delay:int, $17 as dest:chararray;
C = group b all; -- this is failing for cast error, also get an error failed to read data from input file..
D =foreach c generate b.dest, AVG(b.delay);

执行此操作时,从源文件读取了0条记录,mapreduce作业失败。。
为什么不能计算平均值?

ztigrdn8

ztigrdn81#

第一件事a、a的处理方式不同(在pig中,关系名称区分大小写),第二件事是计算关系上的聚合函数和任何属性上的group by。。
在foreach中,您应该指定分组属性和聚合函数。。
在这个场景中,您使用了group by all,因此不能将b.dest与聚合函数一起使用。。
如果您想获得目的地方面的avg()延迟,那么您应该按目的地分组。。

omvjsjqw

omvjsjqw2#

检查文件的扩展名/路径。文件是否用逗号分隔?另外,你的剧本有很多案例问题。
pigstorage-s在load语句中很小。
a=使用pigstorage(',')加载“flightdelays”;
b=foreach a生成$14作为delay:int17美元dest:chararray;
没有称为a、b、c的关系。您正在将数据加载到关系a等等。

相关问题