2016-12-04 56 views
0

我试图对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 

任何帮助深表感谢。

回答

0

您错过了';'订购温度后。

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

OR

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

注:我假设你正在使用的数据夫因为PIG没有中位数function.Ensure罐子正确注册

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

是的,工作。 – Sidhartha