как сохранить мешок свиньи в формате json

Я бегу Свинья

example$ pig --version
Apache Pig version 0.8.1-cdh3u1 (rexported) 
compiled Jul 18 2011, 08:29:40

на очень простом наборе данных

example$ hadoop fs -cat /user/pavel/trivial.log
1   one
2   two
3   three

Я пытаюсь сохранить формат сумки как json, используя следующий скрипт:

REGISTER ./pig.jar;
A = LOAD 'trivial.log' USING PigStorage('\t') AS (mynum: int, mynumstr: chararray);
B = GROUP A BY mynum;
DUMP B;
STORE B into 'trivial_json.out' USING JsonStorage();

и я получаю сообщение об ошибке: Сообщение об ошибке бэкенда

---------------------
java.lang.NullPointerException
    at org.apache.pig.ResourceSchema.<init>(ResourceSchema.java:239)
    at org.apache.pig.builtin.JsonStorage.prepareToWrite(JsonStorage.java:129)
    at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat$PigRecordWriter.<init>(PigOutputFormat.java:124)
    at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat.getRecordWriter(PigOutputFormat.java:85)
    at org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:559)
    at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:414)
    at org.apache.hadoop.mapred.Child$4.run(Child.java:270)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:396)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1127)
    at org.apache.hadoop.mapred.Child.main(Child.java:264)

Pig Stack Trace
---------------
ERROR 2997: Unable to recreate exception from backed error: java.lang.NullPointerException

org.apache.pig.backend.executionengine.ExecException: ERROR 2997: Unable to recreate exception from backed error: java.lang.NullPointerException
    at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.Launcher.getErrorMessages(Launcher.java:221)
    at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.Launcher.getStats(Launcher.java:154)
    at org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher.launchPig(MapReduceLauncher.java:337)
    at org.apache.pig.backend.hadoop.executionengine.HExecutionEngine.execute(HExecutionEngine.java:382)
    at org.apache.pig.PigServer.executeCompiledLogicalPlan(PigServer.java:1209)
    at org.apache.pig.PigServer.execute(PigServer.java:1201)
    at org.apache.pig.PigServer.access$100(PigServer.java:129)
    at org.apache.pig.PigServer$Graph.execute(PigServer.java:1528)
    at org.apache.pig.PigServer.executeBatchEx(PigServer.java:373)
    at org.apache.pig.PigServer.executeBatch(PigServer.java:340)
    at org.apache.pig.tools.grunt.GruntParser.executeBatch(GruntParser.java:115)
    at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:172)
    at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:144)
    at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:90)
    at org.apache.pig.Main.run(Main.java:396)
    at org.apache.pig.Main.main(Main.java:107)
================================================================================

Я недостаточно силен в Java, чтобы отлаживать за считанные минуты, может кто-нибудь подсказать, что может происходить?

Спасибо большое! -Павел


person PVM    schedule 22.11.2011    source источник


Ответы (1)


Получил несколько вопросов по этому поводу по электронной почте, подумал, что это может быть полезно для других:

Оказалось, что класс JsonStorage не был включен в мою установку Pig. На самом деле его еще нет даже в стабильной ветке, вы не найдете его в 0.9.2. Но если вы получите последний багажник

http://svn.apache.org/repos/asf/pig/trunk/

затем trunk/test/org/apache/pig/test/TestJsonLoaderStorage.java показывает, как это работает. Если вы не против невыпущенных версий, то можете попробовать. Если вы пойдете по этому пути, вам также следует взглянуть на Avro (двоичный формат с метаданными json). Официально он тоже не вышел.

Я пытался запустить потоковое задание python и пытался избежать ручного указания схемы. В конце концов я прошел мимо свиных мешков и разобрал их вручную.

Надеюсь это поможет. -Павел

person PVM    schedule 06.03.2012