我的Pig拉丁语脚本中的bug

wko9yo5t  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(433)

我想在Pig的一个文件上做一个中值运算。文件看起来像这样。

NewYork,-1
NewYork,-5
NewYork,-2
NewYork,3
NewYork,4
NewYork,13
NewYork,11
Amsterdam,12
Amsterdam,11
Amsterdam,2
Amsterdam,1
Amsterdam,-1
Amsterdam,-4
Mumbai,1
Mumbai,4
Mumbai,5
Mumbai,-2
Mumbai,9
Mumbai,-4

将加载文件,其中的数据分组如下:

wdata = load 'weatherdata' using PigStorage(',') as (city:chararray, temp:int);
 wdata_g = group wdata by city;

我试着从城市的所有温度中得出中间值,如下所示:

wdata_tempmedian = foreach wdata_g { tu = wdata.temp as temp; ord = order tu by temp generate group, Median(ord); }

数据是有序的,因为需要按顺序排序才能找到中间值。但是我收到了以下错误信息,我不知道是什么错误:

[main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: <line 3, column 53> mismatched input 'as' expecting SEMI_COLON

非常感谢您的帮助。

gab6jxml

gab6jxml1#

你缺少一个“;”定好温度后。

wdata_tempmedian = FOREACH wdata_g { 
                     tu = wdata.temp as temp; 
                     ord = ORDER tu BY temp;
                     GENERATE group, Median(ord);
                      }

wdata_ordered = ORDER wdata_g BY temp;
wdata_tempmedian = FOREACH wdata_ordered GENERATE group, Median(ord);

note:i am 假设您使用的是data fu,因为pig没有中值函数。请确保jar已正确注册

register /path/datafu-pig-incubating-1.3.1.jar

相关问题