2016-08-31 13 views
0

Ich habe den folgenden Code:Syntaxfehler, unerwartetes Symbol an oder in der Nähe von ‚groupped‘

Input_File = load '/user/cloudera/teste' USING PigStorage (' ') 
     as (ID:Int, 
      Descrip:Chararray, 
      Date:Datetime); 

groupped = group Input_File by (ID, Date); 

ranked = foreach groupped { 
     ranked = rank groupped by ID desc DENSE; 
     generate flatten(ranked); 
     } 

STORE ranked into '/user/cloudera/teste1123'; 

Ich versuche Rang Spalte auf diesem Datensatz zu erstellen:

id des date 
1 A 01-01-2016 
2 A 02-01-2016 
2 C 03-01-2016 
2 D 03-01-2016 
3 A 01-01-2016 

Das Hauptziel wird diese bekommen:

rank id desc date 
1  1 A 01-01-2016 
2  2 A 02-01-2016 
3  2 C 03-01-2016 
3  2 D 03-01-2016 
4  3 A 01-01-2016 

Aber wenn ich meinen Code renne ich die folgende Fehlermeldung erhalten:

ERROR 1200: <line 5, column 14> Syntax error, unexpected symbol at or near 'groupped' 

Failed to parse: <line 5, column 14> Syntax error, unexpected symbol at or near 'groupped' 
    at org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:241) 
    at org.apache.pig.parser.QueryParserDriver.parse(QueryParserDriver.java:179) 
    at org.apache.pig.PigServer$Graph.validateQuery(PigServer.java:1660) 
    at org.apache.pig.PigServer$Graph.registerQuery(PigServer.java:1633) 
    at org.apache.pig.PigServer.registerQuery(PigServer.java:587) 
    at org.apache.pig.tools.grunt.GruntParser.processPig(GruntParser.java:1090) 
    at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:501) 
    at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:198) 
    at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:173) 
    at org.apache.pig.tools.grunt.Grunt.run(Grunt.java:69) 
    at org.apache.pig.Main.run(Main.java:547) 
    at org.apache.pig.Main.main(Main.java:158) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.hadoop.util.RunJar.run(RunJar.java:221) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136) 

Was mache ich falsch?

Vielen Dank!

+0

Wenn der Rang Spalte den gleichen Wert wie die ID-Spalte hat, dann können Sie einfach eine neue ID erstellen Spalte und benennen Sie es als Rang. –

+0

Sind Sie sicher, dass "gruppiert" innerhalb des Blocks "foreach grouped" referenziert werden kann? –

+0

inquisitive_mind Sorry, ich kopiere die falschen Daten auf den Post ... –

Antwort

0

Nicht sicher, wo der Syntaxfehler ist, aber hier ist die Lösung, die Sie suchen.

Hinweis: Sie laden müssen Datum als chararray

Input_File = load '/user/cloudera/teste' USING PigStorage(' ') as (ID:int, Descrip:chararray,Date:chararray); 
ranked = rank Input_File by ID ASC,Date DENSE; 
dump ranked; 

Ausgabe

enter image description here

Verwandte Themen