hadoop - Pig: Failed to parse: mismatched input 'id' expecting set null -


i using pig 0.12.1 , have following pig code:

c = load '$file' using mycustomloader(); d = foreach c generate key#id; 

i loading file using custom loader. want generate of ids stored in key, map.

why getting following error message:

14/06/27 16:56:21 error pig.pigserver: exception during parsing: error during parsing.     <line 3, column 28>  mismatched input 'id' expecting set null failed parse: <line 3, column 28>  mismatched input 'id' expecting set null 

here full stacktrace:

14/06/27 16:56:21 error pig.pigserver: exception during parsing: error during parsing.     <line 3, column 28>  mismatched input 'id' expecting set null failed parse: <line 3, column 28>  mismatched input 'id' expecting set null         @ org.apache.pig.parser.queryparserdriver.parse(queryparserdriver.java:241)         @ org.apache.pig.parser.queryparserdriver.parse(queryparserdriver.java:179)         @ org.apache.pig.pigserver$graph.parsequery(pigserver.java:1676)         @ org.apache.pig.pigserver$graph.registerquery(pigserver.java:1623)         @ org.apache.pig.pigserver.registerquery(pigserver.java:575)         @ org.apache.pig.tools.grunt.gruntparser.processpig(gruntparser.java:1093)         @ org.apache.pig.pigunit.pig.gruntparser.processpig(gruntparser.java:61)         @ org.apache.pig.tools.pigscript.parser.pigscriptparser.parse(pigscriptparser.java:501)         @ org.apache.pig.tools.grunt.gruntparser.parsestoponerror(gruntparser.java:198)         @ org.apache.pig.pigunit.pig.pigserver.registerscript(pigserver.java:56)         @ org.apache.pig.pigunit.pigtest.registerscript(pigtest.java:170)         @ org.apache.pig.pigunit.pigtest.assertoutput(pigtest.java:249)         @ com.testpig.pigtest.testpig(pigtest.java:159)         @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)         @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57)         @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)         @ java.lang.reflect.method.invoke(method.java:601)         @ org.junit.runners.model.frameworkmethod$1.runreflectivecall(frameworkmethod.java:47)         @ org.junit.internal.runners.model.reflectivecallable.run(reflectivecallable.java:12)         @ org.junit.runners.model.frameworkmethod.invokeexplosively(frameworkmethod.java:44)         @ org.junit.internal.runners.statements.invokemethod.evaluate(invokemethod.java:17)         @ org.junit.runners.parentrunner.runleaf(parentrunner.java:271)         @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:70)         @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:50)         @ org.junit.runners.parentrunner$3.run(parentrunner.java:238)         @ org.junit.runners.parentrunner$1.schedule(parentrunner.java:63)         @ org.junit.runners.parentrunner.runchildren(parentrunner.java:236)         @ org.junit.runners.parentrunner.access$000(parentrunner.java:53)         @ org.junit.runners.parentrunner$2.evaluate(parentrunner.java:229)         @ org.junit.internal.runners.statements.runbefores.evaluate(runbefores.java:26)         @ org.junit.runners.parentrunner.run(parentrunner.java:309)         @ org.apache.maven.surefire.junit4.junit4testset.execute(junit4testset.java:53)         @ org.apache.maven.surefire.junit4.junit4provider.executetestset(junit4provider.java:123)         @ org.apache.maven.surefire.junit4.junit4provider.invoke(junit4provider.java:104)         @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)         @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57)         @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)         @ java.lang.reflect.method.invoke(method.java:601)         @ org.apache.maven.surefire.util.reflectionutils.invokemethodwitharray(reflectionutils.java:164)         @ org.apache.maven.surefire.booter.providerfactory$providerproxy.invoke(providerfactory.java:110)         @ org.apache.maven.surefire.booter.surefirestarter.invokeprovider(surefirestarter.java:172)         @ org.apache.maven.surefire.booter.surefirestarter.runsuitesinprocesswhenforked(surefirestarter.java:104)         @ org.apache.maven.surefire.booter.forkedbooter.main(forkedbooter.java:70) 14/06/27 16:56:21 warn util.nativecodeloader: unable load native-hadoop library platform... using builtin-java classes applicable 14/06/27 16:56:21 info compress.codecpool: got brand-new compressor 

the erroneous code in question this:

c = load '$file' using mycustomloader(); d = foreach c generate key#id; 

the correct code is:

c = load '$file' using mycustomloader(); d = foreach c generate key#'id'; 

in pig, access map's key, have use single quotation marks around key.

for more information, see philip (flip) kromer's post @ https://www.mail-archive.com/dev@pig.apache.org/msg24691.html:

omitting quotes on key dereference gives unhelpful error message.  {code} users = foreach user_hashes generate info#userid userid:chararray;  -- 400   error: error 1200: <file ./foo.pig, line 8, column 42>  [...]  mismatched input 'userid' expecting set null {code}  may user forgot quotes, or may instead assuming pig  allows dereferencing map value of alias or expression:  {code} users = foreach user_hashes generate   info#'username',               -- works   info#username,                 -- need quotes around literal   info#fullref,                  -- no, can't use alias' value deref   info#(concat('user',shortref)) -- , can't use expression deref   ; {code} 

Comments

Popular posts from this blog

javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -

jsf - How to ajax update an item in the footer of a PrimeFaces dataTable? -

django - CSRF verification failed. Request aborted. CSRF cookie not set -