2016-12-04 1 views
0

私は豚のファイルに対してメディアン操作をしようとしています。ファイルは次のようになります。私の豚ラテンスクリプトのバグ

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はjarファイルが正しく

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

はいを​​登録されている中央値function.Ensureを持っていないので、あなたはデータ-FUを使用していると仮定しています働いた。 – Sidhartha