#apache-pig #protocol-buffers #elephantbird
#apache-pig #протокол-буферы #elephantbird
Вопрос:
У меня есть куча несжатых файлов двоичного журнала protobuf (*.binlog). В дополнение к несжатому, каждый файл / поток содержит переменное количество сообщений.
Я пытаюсь загрузить эти файлы в HDFS и запросить их с помощью Pig.
Мой вопрос:
Возможно ли вообще прочитать несжатые файлы с помощью Elephant-Bird? Я также пытался прочитать файлы в кодировке bzip2, но мои попытки пока выдают Failed to read from file
ошибку
Я пытаюсь
register '/all-libraries/*.jar';
raw_data = load 'file.binlog' using com.twitter.elephantbird.pig.load.ProtobufPigLoader('my_package.My_proto_Class');
Функция загрузки возвращается без ошибок, но когда я говорю
value = foreach raw_data generate field1; //doesn't throw error
dump value //throws error
Трассировка стека Pig
ОШИБКА 1066: не удается открыть итератор для значения псевдонима
org.apache.pig.impl.logicalLayer.Исключение FrontendException: ОШИБКА 1066: не удается открыть итератор для псевдонима person_phone_numbers в org.apache.pig.PigServer.openIterator(PigServer.java:892) в org.apache.pig.tools.grunt.GruntParser.processDump(GruntParser.java:774) в org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:372) в org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:198) в org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:173) в org.apache.pig.tools.grunt.Grunt.run(Grunt.java:69) в org.apache.pig.Main.run(Main.java:541) в org.apache.pig.Main.main(Main.java:156) в sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.invoke). java:57) на sun.reflect.Делегирование methodaccessorimpl.invoke(делегирование methodaccessorimpl.java:43) в java.lang.reflect.Метод.invoke (Метод.java:606) в org.apache.hadoop.util.RunJar.run(RunJar.java:221) в org.apache.hadoop.util.RunJar.main(RunJar.java: 136) Вызвано: java.io.IOException: задание завершено с аномальным статусом СБОЙ в org.apache.pig.PigServer.openIterator(PigServer.java:884) … еще 13
Нет, кто-нибудь подскажет, возможно ли это вообще? Как я могу направить ProtobufPigLoader
, чтобы прочитать длину сообщения перед чтением сообщения?
Комментарии:
1. Вы можете сбросить raw_data? — Вы пробовали запускать этот код с тривиальным вводом?