2012-06-14 11 views
5

Actualmente, he comenzado a trabajar con archivos JSON y a procesar datos usando scripts de PIG. Estoy usando la versión 0.9.3 de Pig. Me he encontrado con PiggyBank, que pensé que sería útil para cargar y procesar el archivo json en las secuencias de comandos PIG.Procesando Json a través de Scripts de cerdo

He creado piggybank.jar a través de ANT. Más tarde, he compilado el Java File y actualicé el piggybank.jar. Estaba tratando de ejecutar el archivo json ejemplo dado.

He escrito un PIGSCRIPT simple y el JSON respectivo de la siguiente manera.

REGISTER piggybank.jar 
a = LOAD 'file3.json' using org.apache.pig.piggybank.storage.JsonLoader() AS (json:map[]); 
b = foreach a GENERATE flatten(json#'menu') AS menu; 
c = foreach b generate flatten(menu#'popup') as popup; 
d = foreach c generate flatten(popup#'menuitem') as menu; 
e = foreach d generate flatten(menu#'value') as val; 
DUMP e; 

file3.json 
{ "menu" : { 
    "id" : "file", 
    "value" : "File", 
    "popup": { 
     "menuitem" : [ 
     {"value" : "New", "onclick": "CreateNewDoc()"}, 
     {"value" : "Open", "onclick": "OpenDoc()"}, 
     {"value" : "Close", "onclick": "CloseDoc()"} 
     ] 
    } 
}} 

tengo la siguiente excepción en tiempo de ejecución:

org.apache.pig.backend.executionengine.ExecException: ERROR 6018: Error while reading input - Could not json-decode string: { "menu" : { 
    at org.apache.pig.piggybank.storage.JsonLoader.parseStringToTuple(JsonLoader.java:127) 

archivo de registro de cerdo:

Pig Stack Trace 
--------------- 
ERROR 1066: Unable to open iterator for alias e 

org.apache.pig.impl.logicalLayer.FrontendException: ERROR 1066: Unable to open iterator for alias e 
     at org.apache.pig.PigServer.openIterator(PigServer.java:901) 
     at org.apache.pig.tools.grunt.GruntParser.processDump(GruntParser.java:655) 
     at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:303) 
     at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:188) 
     at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:164) 
     at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:84) 
     at org.apache.pig.Main.run(Main.java:561) 
     at org.apache.pig.Main.main(Main.java:111) 
     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:616) 
     at org.apache.hadoop.util.RunJar.main(RunJar.java:156) 
Caused by: java.io.IOException: Job terminated with anomalous status FAILED 
     at org.apache.pig.PigServer.openIterator(PigServer.java:893) 
     ... 12 more 
================================================================================ 

Por favor, corríjanme si estoy equivocado. Gracias

+0

Para las personas que encontraron esta publicación al buscar [ERROR 1066: no se puede abrir el iterador para el alias] (http://stackoverflow.com/questions/34495085/error-1066-unable-to-open-iterator-for- alias-in-pig-generic-solution) aquí hay una [solución genérica] (http://stackoverflow.com/a/34495086/983722). –

Respuesta

Cuestiones relacionadas