我得到的平均功能错误。任何人都可以帮助以下脚本:(我需要使用元组或袋加载时?)谢谢。
mydata = LOAD 'bigdata.txt' USING PigStorage(',') AS (stn , wban, yearmoda, temp, a , dewp :double, b , slp :double, c, stp :double, d, visib :double, e, wdsp :double, f, mxspd :double, gust :double, max :double, min :double, prcp :double, sndp :double, frshtt);
clean1 = FOREACH mydata GENERATE stn , wban, yearmoda, temp, a , dewp, b , slp, c, stp, d, visib, e, wdsp, f, mxspd, gust, max , min, prcp ,sndp , frshtt;
--clean2 = FILTER clean1 BY (temp == 9999.9);
tmpdata = FOREACH clean1 GENERATE stn, SUBSTRING(yearmoda, 0, 5) as year, temp;
C = GROUP tmpdata BY (year, temp);
avgtemp = FOREACH C GENERATE group, AVG(temp);
1条答案
按热度按时间bjg7j2ky1#
你没有分配
temp
当你LOAD
你的数据被篡改了。所以当Pig试图呼叫AVG
函数,并检查要使用的版本(因为如果字段是int
而不是一个double
,例如),它不能告诉如何继续。给予temp
a型(如temp:int
)在你的LOAD
声明,它应该起作用。在您的例子中,您还没有正确指定字段。你需要通过
AVG
要评估的包。你通过突出temp
记录袋中的字段C
. 的模式C
是{(group:(year,temp)), tmpdata:{(stn,year:chararray,temp)})}
,所以需要计算avgtemp
这样地: