计算延迟的猪计算失败

时间:2016-09-12 20:41:27

标签: apache-pig average

我有飞机数据文件,有飞机目的地和延误(延误可能是负数或正数)

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作业失败..

为什么无法计算AVG?

2 个答案:

答案 0 :(得分:0)

检查文件的扩展名/路径。您的文件是否以逗号分隔?此外,您的脚本存在大量案例问题。

  • PigStorage - 在你的加载语句中s很小。

    A =使用PigStorage加载'flightdelays'(',');

  • B = foreach a生成$ 14延迟:int,$ 17 as dest:chararray;

没有关系称为a,b,c。您正在将数据加载到关系A等等。

答案 1 :(得分:0)

第一件事 A,处理方式不同 (猪关系名称区分大小写)和第二件事在计算任何属性的关系和分组上的聚合函数时。

在FOREACH中,您应指定 分组属性和汇总功能 ..

在这种情况下,您使用了所有组,因此您无法使用b.dest和聚合函数。

如果你想要目标明智的AVG()延迟,那么你应该按目标分组..