2012-06-14 24 views
5

Şu anda JSON dosya ve PIG komut dosyalarını kullanarak işlem verileri ile çalışmaya başladık. Domuz versiyonu 0.9.3 kullanıyorum. PiggyBank'a rastladım ve PIG komut dosyalarında json dosyasını yüklemek ve işlemek için yararlı olacağını düşündüm.İşleme Json Pig aracılığıyla Scripts

Ben ANT yoluyla piggybank.jar kurduk. Daha sonra, Java File derledim ve piggybank.jar dosyasını güncelledim. Verilen örnek json dosyasını çalıştırmaya çalışıyordu. aşağıdaki gibi

Ben basit PIGSCRIPT ve ilgili JSON yazdım.

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()"} 
     ] 
    } 
}} 

Ben çalışma sırasında aşağıdaki özel durum almak:

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) 

Domuz günlük dosyası: Yanlış isem

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 
================================================================================ 

beni düzeltin. Teşekkür

+0

[HATA 1066: takma ad için yineleyici açılamıyor] (http://stackoverflow.com/questions/34495085/error-1066-unable-to-open-iterator-for- alias-in-pig-jenerik-çözüm) burada bir [genel çözüm] (http://stackoverflow.com/a/34495086/983722). –

cevap