如何使用Elephant-Bird阅读多消息流,未压缩的Protobuf文件?

时间:2016-10-20 08:21:21

标签: apache-pig protocol-buffers 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

猪堆痕迹

错误1066:无法打开别名值的迭代器

org.apache.pig.impl.logicalLayer.FrontendException:ERROR 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)     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:606)     在org.apache.hadoop.util.RunJar.run(RunJar.java:221)     在org.apache.hadoop.util.RunJar.main(RunJar.java:136) 引起:java.io.IOException:作业因异常状态FAILED而终止     在org.apache.pig.PigServer.openIterator(PigServer.java:884)     ......还有13个

如果有可能的话,任何人都会提示吗?如何在阅读邮件之前指示ProtobufPigLoader阅读邮件长度?

0 个答案:

没有答案