2012-06-14 32 views
5

Tôi hiện đã bắt đầu làm việc với các tệp JSON và xử lý dữ liệu bằng các tập lệnh PIG. Tôi đang sử dụng Pig phiên bản 0.9.3.I đã đi qua PiggyBank mà tôi nghĩ sẽ hữu ích để tải và xử lý tệp json trong các script PIG.Xử lý Json thông qua Pig Scripts

Tôi đã tạo piggybank.jar thông qua ANT. Sau đó, tôi đã biên soạn số Java File và cập nhật piggybank.jar. Đã cố gắng chạy tệp json mẫu đã cho.

Tôi đã viết PIGSCRIPT đơn giản và JSON tương ứng như sau.

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

tôi nhận được ngoại lệ sau đây trong thời gian chạy:

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) 

Pig log file:

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

Xin vui lòng sửa tôi nếu tôi sai. Cảm ơn

+0

Đối với những người tìm thấy bài đăng này khi tìm kiếm [LRI 1066: Không thể mở trình lặp cho bí danh] (http://stackoverflow.com/questions/34495085/error-1066-unable-to-open-iterator-for- alias-in-pig-generic-solution) ở đây là [giải pháp chung] (http://stackoverflow.com/a/34495086/983722). –

Trả lời

Các vấn đề liên quan