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
Post a Comment